如何存储总计是由两个UI参数的计算得出的

时间:2013-01-23 16:00:59

标签: ruby-on-rails rest

假设我的模型Staff只有两个属性:namehours

我有一个如下所示的表单,其中startfinish是虚拟属性:

<%= form_for(@staff) do |f| %>
  <%= f.label :name %><br />
  <%= f.text_field :name %>
</div>
<div class="field">
  <%= f.label :start %><br />
  <%= f.text_field :start %>
<div class="field">
  <%= f.label :finish %><br />
  <%= f.text_field :finish %>
</div>
<div class="actions">
  <%= f.submit %>
</div>
<% end %>

在我的数据库中,我想保存namehourshoursfinishstart之间的差异。

我的问题是:在我的数据库中计算和保存hours的最佳方法是什么?有一种方法可以在Staff模型上创建方法,或者我需要在我的控制器的createupdate操作中进行计算?

1 个答案:

答案 0 :(得分:3)

正确的方法是在模型中执行此操作并进行before_savebefore_create回调。尝试这样的事情:

before_save :set_hours

def set_hours
  self.hours = finish - start
end

希望这有帮助。