ブール列を追加した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 を開発モードで使用しています。