5

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

私が実行しているクエリはmailings、削除されたアイテムを返す必要があります:

Field.joins(:mailings).where('mailings.id = ?', mailing_id)
4

5 に答える 5

1

gem は、削除されていないアイテムのみをクエリに含めるデフォルトのparanoidスコープを設定します。回避策は次のとおりです。

Field.joins(:mailings).where('mailings.id = ? AND mailings.deleted_at IS NOT NULL', mailing_id)
于 2016-08-14T21:53:49.627 に答える
-1

Paranoid gem には、削除されたアイテムにアクセスするためのスコープが組み込まれています: with_deleted。

Mailing.with_deleted.joins(:fields).where(id: mailing_id)
于 2016-08-15T01:58:32.900 に答える