0

次の表「参加」があります。

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」エラーが発生します。

4

0 に答える 0