2011-02-14 74 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作爲鍵的散列,以及作爲值的持續時間之和。