鉴于以下课程:
class Candidate
has_many :applications
has_many :companies, :through => :job_offers
end
class JobOffer
belongs_to :company
end
class Application
belongs_to :candidate
belongs_to :job_offer
end
Run Code Online (Sandbox Code Playgroud)

如何在Rails上验证之前的语句(在图像中)?
在更新时,在Application上添加以下验证将不起作用:
def validate_uniqueness_of_candidate_within_company
errors.add(:job_offer_id, "...") if candidate.companies.include?(company)
end
Run Code Online (Sandbox Code Playgroud)
当尝试将应用程序更改为同一公司候选人的其他JobOffer时,会导致该公司退回.
我也试过在应用程序上做这样的事情:
validates_uniqueness_of :user_id, :scope => {:job_offer => :company_id}
Run Code Online (Sandbox Code Playgroud)
但它也没有用.任何想法解决这个问题,而不必使用10行蹩脚的代码?