回调功能在rails before_save中不起作用

时间:2011-11-16 09:14:44

标签: ruby-on-rails ruby ruby-on-rails-3.1

我在模型中有以下内容:

before_save :set_defaults

def set_defaults
  self.num_results ||= 5
end

我在控制器中创建了这样的对象:

Search.create!(  :keyword        => params[:keyword],
                 :ip_address     => request.remote_ip,
                 :referring_page => request.referer )

即使我没有为num_results设置值,它仍然会保存为0(这是数据库架构中的默认值)。回调函数根本没有被调用。有线索吗?

更新

我发现回调确实被调用了,问题在于:

self.num_results ||= 5

如何在ruby中设置默认值?因为这似乎不起作用。

1 个答案:

答案 0 :(得分:1)

如果num_result为nil,则

num_results仅设置为5。在您的情况下,默认设置为0,因此assignemt不执行任何操作。尝试将您的作业更改为:

self.num_results = 5