2011-02-14 49 views
0

我有一个用户有时间日志(有日期)的数据模型。在Rails 3.0中查询复杂数据

我试图以一种让我吐出数据表的方式来查询我的数据库,列出每个有时间记录的用户以及查询期间每天记录的时间总和(类似于精华到每周时间表)。

我在解决这个问题的方法时遇到了问题。有任何想法吗?

+0

请添加更多关于您当前设置(模型等)的信息 – jmccartie

+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 

一旦你这样做,你可以查询timelogs用户:

User.all.timelogs 

您可以添加额外的查询(特定的日期,金额等)。退房的Rails指南为如何缩小这个查询的详细信息:

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

+0

是的,想通了 - 这是一个正在运行的应用程序。我感兴趣的是如何做这个相当复杂的报告... –

+0

你没有提到任何这一点,所以我认为你是从头开始。感谢我的回答。 :| – jmccartie

+0

...没有理由,这个答案应该已经downvoted。 – Andrew

0

试试这个,假设时间被存储为秒数为每个timelog行中的“时间”栏:

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

这会给你一个用户id作为键的散列,以及作为值的持续时间之和。