Ruby on Rails时间输入/超时记录

时间:2012-02-07 23:48:13

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

我正在尝试在名为'timeclock'的模型上录制'time_in'和'time_out'记录。这是我想要做的但是无法开始工作!

  1. 检查最后一个时钟输入并查看是否同时填写了'time_in'和'time_out'记录。如果是,则创建一个新记录(如下所示):

    form_for([@employee, @employee.timeclocks.build]) do |f|
    
      f.hidden_field :time_in, :value => @current_time 
    
      f.submit "Clock In"
    
    end
    
  2. 如果已经有一个不完整的时钟记录(有'time_in'记录但没有'time_out'记录,则渲染表格或更新最后一条记录。

  3. 我已经能够将时间记录存入数据库,但从未在相同的数据记录中获取,如下所示:http://cl.ly/E0Rg(图像)

    这有意义吗?如果您需要一些澄清问题,请不要犹豫!谢谢!

1 个答案:

答案 0 :(得分:6)

使用您提供的代码,您始终创建新记录,因为@ employee.timeclocks.build用于创建记录。

如果你想要更新记录,你应首先获取它,然后在form_for方法中传递此记录

获取记录使用@ employee.timeclocks.find fappropriate where子句获取要更新的记录

form_for([@employee, @timeclock]) do |f|

  f.hidden_field :time_in, :value => @current_time 

  f.submit "Clock In"

end

您可以在控制器中设置@timeclock,使用新记录或使用要更新的记录