在初始化所有字段后执行Rails回调

时间:2015-05-31 15:36:23

标签: ruby-on-rails callback

如何在初始化所有字段后调用的模型中创建回调?

我尝试使用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>

1 个答案:

答案 0 :(得分:0)

您在上面的代码中创建的回调是正确的。我在这里看到的问题是,我没有看到任何用于初始化模型的代码,例如“&#39; new&#39;”,它会为您的属性赋值。

如果没有这个,你的属性都没有任何值。

你可能会问,为什么&#39; id&#39;没有值,但这是因为只有在实际创建/保存记录时才会创建和分配ID。

您需要以下内容:

Article.new(:name => 'My Article')

在您的控制器中或只是转到rails控制台并执行以下操作:

  
    

article = Article.new(:name =&gt;&#39;我的文章&#39;)

  

初始化文章。