rails中的create_before和initialise有什么区别?

时间:2016-01-28 22:35:10

标签: ruby-on-rails activerecord

我想在创建对象时设置数据。目前我使用两种方式:

使用before_create

Application

覆盖初始化

before_create :set_number

def set_number
  self.number = Random.new.rand(1..1000)
end

它们之间有什么区别,还有更好的解决方案吗?

感谢。

1 个答案:

答案 0 :(得分:0)

initialize上触发

Object#new。在触发任何回调方法之前。更重要的是,在所有验证发生后调用before_create

我建议不要覆盖initialize。相反,您可以使用after_initialize挂钩。

但是,每次进行MyObject.new时,我都不会花费宝贵的计算周期来生成随机数(除非您明确需要这样做)。您可能希望在持久保存对象时生成它。所以我会用:

before_validation :set_number, on: :create