如何在初始化所有字段后调用的模型中创建回调?
我尝试使用after_initialize
回调,如下所示:
class Article < ActiveRecord::Base
after_initialize :print_self
def print_self
pp self
end
但是,此时所有字段均为nil
,如print语句所示:
#<Article:0x007f8bea51a298
id: nil,
name: nil,
body: nil,
url: nil,
published_at: nil,
created_at: nil,
updated_at: nil,
guid: nil,
summary: nil>
答案 0 :(得分:0)
您在上面的代码中创建的回调是正确的。我在这里看到的问题是,我没有看到任何用于初始化模型的代码,例如“&#39; new&#39;”,它会为您的属性赋值。
如果没有这个,你的属性都没有任何值。
你可能会问,为什么&#39; id&#39;没有值,但这是因为只有在实际创建/保存记录时才会创建和分配ID。
您需要以下内容:
Article.new(:name => 'My Article')
在您的控制器中或只是转到rails控制台并执行以下操作:
article = Article.new(:name =&gt;&#39;我的文章&#39;)
初始化文章。