ブール列を追加したPrinter
モデルがあります。master
プリンターbelongs_to :restaurant
。master
フラグは、このプリンターがこのレストランのプライマリ プリンターであるかどうかを示します。
Printer モデルにメソッドがあります。
def set_master_on_create
if self.restaurant.printers.empty?
self[:master] = true
else
self[:master] = false
end
end
このコールバックを設定します。before_create :set_master_on_create
このメソッドを として実行before_create
すると、新しいプリンターの作成は失敗します。コールバックを変更しafter_validation
て新しいオブジェクトを作成すると、:on => :create
オプションを使用しても問題なく動作します。
Rails はオブジェクトをフリーズするので、特定の時点以降は値を変更できなくなりますRollback
か? どんな助けでも感謝します。
Rails 3.2.2 と sqlite を開発モードで使用しています。