次の表「参加」があります。
id: integer
coupon_id: integer
participant_type: string
participant_id: integer
私は次のモデルを持っています:
class Participation < ActiveRecord::Base
belongs_to :coupon
belongs_to :participant, :polymorphic => true
belongs_to :group, :class_name => "Group",
:foreign_key => "participant_id"
belongs_to :location, :class_name => "Location",
:foreign_key => "participant_id"
end
class Coupon < ActiveRecord::Base
has_many :partipations, :as => :participant
has_many :groups, :through => :participations, :source => :group,
:conditions => "participants_type = 'Group'"
has_many :locations, :through => :participations, :source => :location,
:conditions => "participants_type = 'Location'"
end
これは、こちらの記事に示されているとおりであり、こちらの ActiveRecord ドキュメントにも似ています。Coupon.first.groups または Coupon.first.locations にアクセスすると、次のエラーで惨めに失敗します。
ActiveRecord::HasManyThroughAssociationNotFoundError:
Could not find the association :participations in model Coupon
他のバリエーションをいくつか試しましたが、うまくいきませんでした。もちろん、Group.first.participations にアクセスすると、「undefined method」エラーが発生します。