2

と呼ばれる列の合計を見つけようとしていますlength。これは、各レコードが持続した秒数でいっぱいの単純な整数列です。

コントローラーで設定したいくつかの条件についてデータベースにクエリを実行するための検索フォームのセットアップがあります。

@time_entries = TimeEntry.find(:all, :conditions => [ "(user_id = ?) AND (projecttitle LIKE ?) AND (date BETWEEN ? AND ?)", current_user, '%'+params[:projecttitle]+'%', @startdate, @enddate ])

lengthそして、返されたクエリの列を合計しようとして、機能しないコードでそのクエリをたどります...

@total_time = @time_entries.sum(:length)

を使用してビューでこれをレンダリングしようとすると、次の<%= @total_time %>エラーが発生します。

undefined method '+' for #<TimeEntry:0x007ffdbbd45b78>

何か案は?あなたの助けは非常に感謝しています:)

4

1 に答える 1

4

変化する

@total_time = @time_entries.sum(:length)

@total_time = @time_entries.sum(&:length)

参考までに、次のようなクエリでuse:select句を操作するために 1 つの列のみが必要な場合

@time_entries = TimeEntry.find(:all, :select => 'length', 
                  :conditions => [ "(user_id = ?) AND (projecttitle LIKE ?) 
                           AND (date BETWEEN ? AND ?)", current_user, 
                           '%'+params[:projecttitle]+'%', @startdate, @enddate ])

テーブルの一部の列の合計のみが必要な場合は、次のようなsumメソッドを使用できます

@total_time = TimeEntry.sum(:length, 
                  :conditions => [ "(user_id = ?) AND (projecttitle LIKE ?) 
                           AND (date BETWEEN ? AND ?)", current_user, 
                           '%'+params[:projecttitle]+'%', @startdate, @enddate ])
于 2012-07-19T08:34:05.940 に答える