Ruby on rails 保存前,回调函数在rails中不起作用
我在模型中有以下内容:Ruby on rails 保存前,回调函数在rails中不起作用,ruby-on-rails,ruby,ruby-on-rails-3.1,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
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\u results
设置值,它仍然被保存为0
(这是数据库模式中的默认值)。回调函数根本不会被调用。有什么线索吗
更新:
我发现回调确实被调用了,问题在于:
self.num|u结果|=5
如何在ruby中设置默认值?因为这似乎不起作用。如果num\u result为nil,num\u results仅设置为5。在您的情况下,它默认设置为0,因此assignemt不做任何事情。尝试将您的作业更改为:
self.num_results = 5
如果num_result为nil,则num_results仅设置为5。在您的情况下,它默认设置为0,因此assignemt不做任何事情。尝试将您的作业更改为:
self.num_results = 5
但是我没有在模型中的任何地方设置0(仅在db模式定义中存在)。如果没有显式设置任何值,是否有方法放置值?如果在迁移中定义了默认值,则在初始化对象时会设置此默认值。您不必在模型中再次设置它,但我不会在模型中的任何位置设置0(仅在db模式定义中存在)。如果没有显式设置任何值,是否有方法放置值?如果在迁移中定义了默认值,则在初始化对象时会设置此默认值。您不必在模型中再次设置它。