Ассоциация has_many только для мягких удаленных записей

Я хочу создать ассоциацию has_many для модели, в которой есть несколько записей с удаленным_катом, не равным nil, и хочу иметь возможность получать эти записи только через ассоциацию has_many, но в настоящее время она не работает, и я не уверен, как это исправить.

class LoanApplication < ActiveRecord::Base
  acts_as_paranoid
  has_many :applicant_co_applicants, :class_name => "ApplicantCoApplicant", :foreign_key => "loan_application_id"
  has_many :co_applicant_infos, :through => :applicant_co_applicants, :source => :loan_application_co_applicant, :dependent => :destroy
  has_many :removed_co_applicant_infos, :through => :applicant_co_applicants, :source => :loan_application_co_applicant, :dependent => :destroy
end

class ApplicantCoApplicant < ActiveRecord::Base
  acts_as_paranoid
  attr_accessible :loan_application_id, :co_applicant_id, :deleted_at

  belongs_to :loan_application_co_applicant, class_name: 'LoanApplication', foreign_key: "co_applicant_id"
  belongs_to :loan_application, class_name: 'LoanApplication', foreign_key: "loan_application_id"
end

Я пытался получить только объекты loan_application из записей soft_deleted в таблице ApplicationCoApplicant, но мой запрос все еще искал только записи с удаленным_от: nil вместо удаленного_кат!= Nil

Есть ли способ, которым я могу получить только записи soft_deleted из модели ApplicantCoAppliant и использовать их для фильтрации ассоциации co_applicant_infos?

Спасибо большое

**LoanApplication Table** 
id     name    deleted_at
1   person a        nil
2   co person b     nil
3   co person c     nil

**ApplicantCoApplicant Table**
  id     loan_application_id     co_applicant_id   deleted_at
  1          1                       2               nil
  2          1                       3               2017-07-24 02:34:37

Это мой образец таблицы. Я хочу, чтобы has_many ассоциировался, когда я звонюLoanApplication.find(1).removed_co_applicant_infos, он вернет только запись LoanApplication с идентификатором 3.

1 ответ

Изменить модель LoanApplication:

has_many :applicant_co_applicants, -> { not_deleted }

добавьте это в модель ApplicantCoApplicant:

scope :not_deleted, -> { where.not('deleted_at' => nil) }
Другие вопросы по тегам