处理'工作时间'

时间:2012-09-18 14:49:19

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

我正在开发一款应用程序,用于跟踪用户的工作时间,然后根据此数据生成图形...
考虑到他们今天可以开始任务并明天完成任务,我无法保存Date ...... 到现在为止,我正在保存一个整数字段,如hours和整数minute ...
是否有办法(某些宝石,可能)帮我处理这类问题? 或任何其他方法?
感谢

我的班级Atendimento包含所有必要的数据

class Atendimento < ActiveRecord::Base
  attr_accessible :horas, :minutos, :empresa, :tipo_atendimento, :observacao, :empresa_id, :tipoatendimento_id

  belongs_to :empresa
  belongs_to :tipo_atendimento, :foreign_key => 'tipoatendimento_id'
  belongs_to :usuario

  validates :horas, :minutos, presence: true
end

3 个答案:

答案 0 :(得分:1)

我会在数据库中添加两个datetime列来跟踪事件的开始和停止时间戳。然后你可以减去这两个值来得到时间。

答案 1 :(得分:1)

您应该将开始和结束时间添加为时间戳,而不是三个字段。您可以通过将这些行添加到迁移文件来完成此操作:

add_column :tasks, :started_at, :timestamp
add_column :tasks, :ended_at, :timestamp

在模型中,您可以使用这些时间戳进行计算。

class Task < ActiveRecord::Base
  attr_accessible :started_at, :ended_at
  validates :started_at, presence: true
  validates :ended_at, presence: true

  # Returns the duration of the task in seconds
  def duration
    ended_at - started_at
  end
end

答案 2 :(得分:0)

我把工作时间保存为秒:)