###前提・実現したいこと
ActiveRecordでeager_loadを使用したときに、selectを使って集計用のカラムを追加し、
かつインスタンスのメソッドとして、そのカラムの値を取り出したい。
###発生している問題・エラーメッセージ
class User < ActiveRecord::Base has_many :articles end class Article < ActiveRecord::Base belongs_to :user end
Article が countというintegerのカラムを持っているとします。
このcountのUserごとの合計を集計したいとき、
> users = User.eager_load(:articles) .select(Arel.star) .select(Article.arel_table[:count].sum.as("total_count")) .group(:user_id) > users.first.total_count
とすると、
NoMethodError: undefined method `total_quantity' for #<User:0x00*******>
と、エラーメッセージが返ってしまいます。
これを何とかする方法はないでしょうか?
よろしくお願いします。
###補足情報
Rails 4.2.3で開発しています。
eager_loadでなく、preloadを使えば動作しますが、出切ればeager_loadでやりたいと考えています。
あなたの回答
tips
プレビュー