代码如下:
class BeautySalonCategory < ActiveRecord::Base
before_create :set_default_values
protected
def set_default_values
self.available = false
end
end
当我使用Rails控制台并输入'BeautySalonCategory.create!(name: "Some name")'我得到以下错误:
ActiveRecord::RecordNotSaved
但是如果我改变自我。Available = false' to 'self。Available = 0',则不会出现任何错误。为什么?谢谢。
有两件事正在发生:Rails期望您的before_create
处理程序在成功运行时返回非false
值,并且Ruby中的a = b
语句的结果是b
。因此,您的self.available = false
版本返回false
,向Rails指示before_create
失败。如果你像这样定义你的方法,一切都会很好:
def set_default_values
self.available = false
true
end