在我的rails应用程序中,我有一个带有start_date和end_date的模型.如果用户选择2010年1月1日作为start_date和2010年1月5日作为end_date,我希望创建5个模型实例(每天选择一个).所以它看起来像
Jan 1, 2010
Jan 2, 2010
Jan 3, 2010
Jan 4, 2010
Jan 5, 2010
Run Code Online (Sandbox Code Playgroud)
我知道解决这个问题的一种方法是在控制器中进行循环.就像是...
# ...inside controller
start_date.upto(end_date) { my_model.new(params[:my_model]) }
Run Code Online (Sandbox Code Playgroud)
但是,我想保持我的控制器瘦,加上我想保持模型逻辑不在其中.我猜我需要覆盖模型中的"新"方法.最好的方法是什么?
我有一个after_initialize方法,如果我没有更新记录,我只想调用它.例如,类似以下内容:
after_initialize :set_some_name, :unless => :updating?
Run Code Online (Sandbox Code Playgroud)
例如,Task.find(123).title应该调用该after_initialize方法.Task.find(123).save!(:title => "something")应该不是调用after_initialize方法.
当然是"更新?" Rails中不存在方法.是否有相同的方法或方法?