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)
到目前为止,我找到的唯一可行的解决方案是手动指定 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)
| 归档时间: |
|
| 查看次数: |
2093 次 |
| 最近记录: |