2011-11-16 45 views
1

在模型中我有以下几点:回调函数在轨工作不before_save

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

我将如何设置红宝石的默认值?因为这似乎并不奏效。

回答

1

如果num_result为零,则num_results仅设置为5。在你的情况下,它默认设置为0,所以assignemt什么都不做。尝试将您的任务更改为:

self.num_results = 5 
+0

但是,我没有在模型中设置0(只存在于数据库模式定义中)。如果没有明确设置,有没有办法提供一个值? – user1049097

+0

如果您在迁移中定义的默认值超过了此默认值,则在初始化对象时。您不必再次将其设置在您的模型中。 – auralbee