我有一個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