Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 保存前,回调函数在rails中不起作用_Ruby On Rails_Ruby_Ruby On Rails 3.1 - Fatal编程技术网

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模式定义中存在)。如果没有显式设置任何值,是否有方法放置值?如果在迁移中定义了默认值,则在初始化对象时会设置此默认值。您不必在模型中再次设置它。