Rails:在属性更改时设置日期字段?

时间:2011-04-08 18:58:59

标签: ruby-on-rails ruby-on-rails-3

我有一个应用类别'有效','等候名单'和'终止'。这些在视图中作为选择框。

当用户选择“已终止”时,我想将当前日期放入日期时间属性(在同一模型中)。

最好的方法是什么?我尝试了这个,但它不起作用,我不确定它是否适合这样做:

[在控制器中]

def update
  @household = Household.find(params[:id])
  if @household.status.eql? 'Terminated'
      @household.terminated = Date.yesterday()
  end
  if @household.update_attributes(params[:household])
    ....
  end
end

1 个答案:

答案 0 :(得分:2)

在模型中使用after_update回调:

class Household
...
after_update :update_terminated_date

def update_terminated_date
    return unless status == 'Terminated'
    self.terminated = Date.today() # maybe better Time.now?
    self.save!
end

编辑: 也许更好的想法就是摆脱状态列并设置在它真正终止时终止,并且当它不是时为空?