0
関係は次のとおりです。今Rails 4ネストされたhas_many where where where節付き
Client -> has_many :analytics
Client -> has_many :metrics, through: :analytics
Analytic -> has_many :metrics
私はこのエラーが出るように私は単にClient.find(1).analytics.where(condition).metrics
を行うことはできません。
undefined method `metrics' for #<Analytic::ActiveRecord_AssociationRelation:0x00000002e31a50>
私が見つけた私は何をすることができますが、以下が、それは非常にレールの道をかさばるようで、ではありません
analytics = client.analytics.where(conditions).select(:id)
metrics = Metric.where(analytic_id: analytics)
私は上記のようにもっと合理的な方法で一緒にチェーン化する方法はありますか?
ありがとうございました。以前は私が試みたよりはるかにエレガントであったが、確かにより読みやすい。両方のソリューションは2つのSQL演算を行います( 'select 'と' select in 'と' select'と 'join')。 – Killerpixler
@Killerpixlerは答えを更新しました – fbelanger
' has_many through' associatonのおかげで、クライアントの結合が必要な場合でも 'c = Client.find(1)'で 'm = c.metrics.joins(:analytic).where(analytics:{cond})' – Killerpixler