1

ポリモーフィックな関連付けを使用して、かなり通常のクラス構造を持っています。

class Contact < ActiveRecord::Base
  has_many :opportunities, :as => :has_opportunities, dependent: :destroy
end 

class Company < ActiveRecord::Base
  has_many :opportunities, :as => :has_opportunities, dependent: :destroy
end 

class Opportunity < ActiveRecord::Base
  belongs_to :has_opportunities, polymorphic: true
  belongs_to :contact, foreign_key: 'has_opportunities_id', conditions: "opportunities.has_opportunities_type = 'Contact'"
  belongs_to :company, foreign_key: 'has_opportunities_id', conditions: "opportunities.has_opportunities_type = 'Company'"
end 

Rails 4 では、:conditions を使用することは推奨されていませんが、子オブジェクトから親オブジェクトへのアクセスを許可するために必要な「新しい」構文がわかりません。

編集: はい、連絡先または会社を返す機会.has_opportunitiesを実行できますが、多くの場合、コードでは機会.連絡先または機会.会社を使用する方が「より良い」です。

4

1 に答える 1