Paranoia Gem - 加入已删除的项目

Pav*_*bin 5 ruby ruby-on-rails ruby-paranoia

我正在使用 Paranoia gem,现在正在努力解决这个问题。我需要加入 has_many已删除的项目,但它只返回不删除。我的模型:

class Mailing < ActiveRecord::Base

  acts_as_paranoid

  has_many :mailing_fields
  has_many :fields, through: :mailing_fields

end

class MailingField < ActiveRecord::

  belongs_to :mailing
  belongs_to :field

end

class Field < ActiveRecord::Base

  has_many :mailing_fields, dependent: :destroy
  has_many :mailings, through: :mailing_fields

end
Run Code Online (Sandbox Code Playgroud)

我正在运行的查询应该返回mailings已删除的项目:

Field.joins(:mailings).where('mailings.id = ?', mailing_id)
Run Code Online (Sandbox Code Playgroud)

Fab*_*ler 7

到目前为止,我找到的唯一可行的解​​决方案是手动指定 JOIN:

Field.joins('INNER JOIN "mailings" ON "mailings"."id" = "fields"."mailing_id"')
     .where('mailings.id = ?', mailing_id)
Run Code Online (Sandbox Code Playgroud)


小智 1

gemparanoid设置一个默认范围,仅在查询中包含未删除的项目。解决方法是:

Field.joins(:mailings).where('mailings.id = ? AND mailings.deleted_at IS NOT NULL', mailing_id)
Run Code Online (Sandbox Code Playgroud)