これはここではかなり一般的な問題のようですが、決定的な解決策はありません。もう一度言い直すと、モデルがあるとします。
def Model < ActiveRecord::Base
has_many :somethings, ...
has_many :otherthings, ...
end
:combined
問題は、2 つを組み合わせた 3 つ目の関連付けを追加する方法です。これは で実行でき、:finder_sql
で同様の結果が得られることはわかっていますscope
が、どちらも実際の関連付けは得られません。:through
これの要点は、次のようなものとの別の関連付けに使用できることですModel.first.combined.some_scope.count
編集:実際のコードの関連部分
class Donation < ActiveRecord::Base
# either Project or Nonprofit
belongs_to :donatable, :polymorphic => true
belongs_to :account
end
class Project < ActiveRecord::Base
belongs_to :nonprofit
end
class Nonprofit < ActiveRecord::Base
has_many :projects
# donations can be either direct or through a project
# the next two associations work fine on their own
# has_many :donations, :as => :donatable, :through => :projects
# has_many :donations, :as => :donatable
has_many :donations, .... # how do I get both here,
has_many :supporters, :through => :donations # for this to work?
end
ありがとう。