0

假设我有一个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 %>

在我的数据库中,我想保存nameand hours(是andhours之间的区别)。finishstart

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

4

1 回答 1

3

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

before_save :set_hours

def set_hours
  self.hours = finish - start
end

希望这可以帮助。

于 2013-01-23T16:11:09.920 回答