在Rails 3.0中查询复杂数据

时间:2011-02-14 14:33:15

标签: ruby-on-rails

我有一个数据模型,用户有时间日志(有日期)。

我试图以一种方式查询我的数据库,这种方式可以让我吐出一个数据表,列出每个有时间日志的用户,以及查询期间每天记录的时间总和(实质上类似)到每周时间表)。

我在找出一种方法时遇到了问题。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

许多细节将取决于您的数据模型,但简短的回答是首先建立关系:

class User < ActiveRecord::Base
  has_many :user_timelogs
  has_many :timelogs, :through => :user_timelogs
end

class UserTimelog < ActiveRecord::Base
  belongs_to :user
  belongs_to :timelog
end

class Timelog < ActiveRecord::Base
  has_many :user_timelogs
  has_many :users, :through => :user_timelogs
end

执行此操作后,您可以查询用户的时间日志:

User.all.timelogs

您可以添加其他查询(特定日期,总和等)。查看Rails指南,了解有关如何缩小查询范围的更多信息:

http://guides.rubyonrails.org/active_record_querying.html

答案 1 :(得分:0)

尝试此操作,假设时间存储为每个时间日志行的“持续时间”列中的秒数:

Timelog.where(...). # your time period
        joins(:users).
        group('users.id').
        sum('duration')

这将为您提供一个哈希,其中用户ID为键,持续时间总和为值。