我有一个Printer
模型,我添加了一个master
布尔列。一台打印机belongs_to :restaurant
。master
标志表明这台打印机是否是这家餐厅的主要打印机。
我在打印机模型中有一个方法:
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
如果我将此方法作为 a 运行,before_create
那么创建新打印机将失败。如果我将回调更改为after_validation
创建新对象,即使使用该:on => :create
选项也将完美无缺。
Rails 是否冻结了对象,所以我不能再在某个点之后更改值,这会导致Rollback
我得到?任何帮助表示赞赏。
我在 Rails 3.2.2 和开发模式下的 sqlite 上。