私は以下の設定をしています。配列をグループ化して合計を得る
Invoice has_many Jobs has_many Tasks belongs_to user
私は仕事を持っているInvoice
ためのすべてのUser
Sを取得し、ここで
class Invoice < ActiveRecord::Base
has_many :jobs
end
class Job < ActiveRecord::Base
belongs_to :invoice
has_many :tasks
end
class Task < ActiveRecord::Base
belongs_to :job
belongs_to :user
end
その量を合計したいがある、私はこれを取得、私は
@invoice = Invoice.find(params[:id])
jobs = @invoice.jobs.joins(:tasks)
.select('tasks.user_id, (sum(tasks.quantity)*jobs.price) as total')
.group('tasks.user_id, jobs.id')
.order('tasks.user_id')
を得たものです私が望むものに近い
- !ruby/object:Job
attributes:
user_id: '1'
total: '60.00'
- !ruby/object:Job
attributes:
user_id: '1'
total: '50.00'
- !ruby/object:Job
attributes:
user_id: '2'
total: '120.00'
- !ruby/object:Job
attributes:
user_id: '2'
total: '100.00'
これをグループ化してuser_id
とすると、このようなことがあるように合計をどのように集計できますか?
user_id: 1
total: 110
user_id: 2
total: 220
でこれを解決するために管理。 'タスク'と 'ジョブ'がどのように接続されていますか? – gabrielhilal
これは、ActiveRecordを使用するのではなく、生のSQLまたはArelに適したジョブのようです。 –
SQLビューについて考えていませんか? –