私は参加者が多いアクティビティモデルを持っており、アクティビティとその参加者を更新するときに必ず参加者が存在するようにしたいと思います。私は、トリックを行います私の活動のモデルで、次の方法があります。Railsはロードされたときにのみ関連付けを有効にします
def must_have_participant
if self.participants.size == 0 || self.participants.size == self.participants.to_ary.find_all{ |p| p.marked_for_destruction? }.count
self.errors[:base] << I18n.t(:msg_activity_must_have_participant)
end
end
問題は、私は単に私が避けたいのですが、独自の活動を更新していた場合、参加者は遅延ロードされているということです。私は、次の代替を試しましたが、ロードされた? :_destroyフラグを使用してすべての参加者を削除すると、falseを返します。
def must_have_participant
if self.new_record? || self.participants.loaded?
if self.participants.size == 0 || self.participants.size == self.participants.to_ary.find_all{ |p| p.marked_for_destruction? }.count
self.errors[:base] << I18n.t(:msg_activity_must_have_participant)
end
end
end
ロードの代替手段はありますか?参加者が更新されるかどうかを知るために使うことができますか?