我有以下型号
class Acceptance < ActiveRecord::Base
belongs_to :user
belongs_to :requested_favor
belongs_to :offered_favor
end
和
class RequestedFavor < Favor
has_many :acceptances, foreign_key: 'favor_id'
end
和
class OfferedFavor < Favor
has_many :acceptances, foreign_key: 'favor_id'
end
多个用户可以向特定acceptance
对象发送favor
请求。 acceptance
具有布尔accepted
属性。
我需要的是,当acceptance
的{{1}}设置为accepted
时,其他true
对象不能设置为acceptance
。我想是一种验证或单一性。我尽力清楚地解释情况:)
如何实现这一目标?非常感谢你的时间!
答案 0 :(得分:1)
解决此问题的最基本方法是在保存接受之前进行检查,并确保&#34; OfferedFavor&#34;它所属的实例还没有任何其他的&#34;被接受的&#34;承兑汇票。在您的验收模型中,检查看起来像这样:
offered_favor.acceptances.where(accepted: true).count > 0
希望这有帮助!