我有一个Printer
模型,我添加了一个master
布尔列。打印机belongs_to :restaurant
。 master
标志指示此打印机是否是此餐厅的主打印机。rails回调before_create破坏after_validate的作品
我在打印机模型的方法:
def set_master_on_create
if self.restaurant.printers.empty?
self[:master] = true
else
self[:master] = false
end
end
,并设置这个回调:如果我运行此方法作为before_create
然后创建一个新的打印机将失败before_create :set_master_on_create
。如果我将回调更改为after_validation
,即使使用:on => :create
选项,创建新对象也能够完美地工作。
是否轨道冻结对象,所以我不能再改变后的某个点,这将导致Rollback
我得到的值?任何帮助赞赏。
我在Rails 3.2.2和开发模式下的sqlite。
哇。这很快,而且很有效。你摇滚!非常感谢 :) – patrickdet 2012-03-04 22:01:10