在数据库Rails中服务对象时为false vs 0



代码如下:

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

最新更新