Joh*_*ley 16 activerecord constructor ruby-on-rails
我刚刚阅读了这个问题,即将ActiveRecord模型的日期字段赋予默认值.接受的答案显示了如何在控制器中设置默认值.在我看来,这种业务逻辑确实属于模型本身.
然后我开始考虑如果这是Java我可能在声明实例变量时或在构造函数中设置初始字段值.由于数据库支持的字段不必在ActiveRecord模型中显式声明,这是否可以使用模型的initialize方法?我很好奇,因为在我看过的Rails代码中,我并没有真正看到ActiveRecord模型的构造函数.他们是否有角色扮演,如果有,它是什么?
Top*_*gio 22
我经常这样做是为了默认值.它运行良好,仍然允许用户更改它.请记住,当你说时,会调用initialize方法MyObject.new.但是,您可能希望阅读有关使用的此博客条目(尽管有点过时)initialize.
你应该使用after_initialize而不是initialize.ActiveRecord :: Base需要initialize方法来准备许多便捷方法.如果after_initialize在模型中定义了一个方法,它将被调用为new,create,find以及生成模型实例的任何其他方法的回调.
理想情况下,您需要像这样定义它:
def after_initialize
@attribute ||= default_value
end
Run Code Online (Sandbox Code Playgroud)
另请注意,您不能像其他回调一样使用此回调,您必须定义名为after_initialize的方法(如上所述)才能使其正常工作.您不能执行以下操作:
after_initialize :run_some_other_method
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7675 次 |
| 最近记录: |