たくさんMovie
のモデルがありPhoto
ます。default?
特定のムービーに同時に設定できる写真は1つだけです。
これをRailsに実装する方法を考えています。次のコードを追加しました。
before_save :check_if_default
def check_if_default
self.movie.photos.where(default: true).update_all(default: false) if self.default?
end
しかし、コンソールを調べると、新しいオブジェクトが真の状態に更新されていません。そうしようとすると、それらは偽のままです。
> a.photos.find(600).default = true
> a.photos.find(600).save
=> true
a.photos.find(600).default
=> false
これは、現在保存されていない現在を含むすべてのオブジェクトを繰り返し処理し、falseに設定していることが原因である可能性がありますか?
この場合、データベースにすでに保存されているアイテムのみを反復処理するにはどうすればよいですか?新しい写真でtrueに設定する前に、otherpossibleをfalseに設定する必要があるため、ここでコールバックを使用after_save
することはお勧めしません。default?