2012-12-21 16 views
5

私は、部門とグループに基づいてユーザーの出席をマークするモデルを持っています。各ユーザーに部門とグループがあります。Rails 3:レコードを集計する方法

登録モデル上記フィールド「1と2は、」タイムスロット(たとえば:9-14から、14-18)ある間

date:date , departmentid:string , groupid:integer , one:integer , two:integer 

.Attendanceは、ユーザーが現在の日付に属するようにマークされ、グループID同じ日には、groupid、departmentid、および出席者の複数のエントリがあります。

enter image description here

以下

サンプルレジスタテーブルノー見つけたいです。 1日あたりのユーザーのアテンション は現在、私はそれがうまくなっているが、私は次のように検索したい、

@register = Register.where(:date=>"2012-12-28").sum(:one , :two ,:three) 

@register = Register.where(:date=>"2012-12-28").sum(:one) 

を試してみましたが、それは可能です....事前に

感謝。

答えて

2

どのように?

class Register < AR:Base 

... 

    def self.attendee_count(slot) # slot is :one or :two 
    scoped.group(:date).sum(slot) 
    end 

end 

Register.where(:date => Date.today).attendee_count(:one) 
Register.where(:date => Date.today, :departmentid => "DP14").attendee_count(:two) 
+0

上記のコードに感謝します。 ...これを見つけることは可能ですか?Register.where(:date => Date.today、:departmentid => "DP14")。attendee_count(:one、:two、:three)...もしそうなら私はモデルで書くべきですか? – Cyber

+0

これは次のようなものです: '[:one、:two、:three] .map {| slot | [列挙可能な総計]に従って、Register.where(:date => Date.today、:departmentid => "DP14")。attendee_count(slot)}。sum'(http://api.rubyonrails.org/classes) /Enumerable.html#method-i-sum)。これは3つのクエリを作成します。私はあなたが簡単に単一のクエリでそれを行うことができるとは思わない。 – systho

0

これは機能しますか?

Department.group(:日付).SUM(:1、:2)これについて

+0

「のDepartmentIDは、」ユーザーtable.Thereにだけフィールドであり、ユーザーとDepartment.Hopeあなたの上記のコードの間にはassosiationのみエントリーのない、ないテーブルのフィールド内のすべてのエントリの合計「1またはを見つけませんです2 " – Cyber

+0

申し訳ありませんが、私は誤解しました。私は更新します – Rahul

+0

私はそれがDepartmentではない投稿を更新しました。それは実際に登録されています.sorry ..あなたのコードはRegister.group(:date).sum(:one、:2)になります.. – Cyber

関連する問題