2016-05-24 11 views
0

has_manyという関連付けに問題があります。rails has_many:through association doesnt work

私は、多くのオフィスやホテル account.rbを持つアカウントのモデルを持っている:

class Account < ActiveRecord::Base 

    # associations 
    has_many :partnerships, through: :hotels, dependent: :destroy 
    has_many :partnerships, through: :offices, dependent: :destroy 
    has_many :users, through: :hotels, dependent: :destroy 
    has_many :hotels, dependent: :destroy 
    has_many :offices, dependent: :destroy 
    belongs_to :admin, class_name: "User", foreign_key: "admin_user_id", dependent: :destroy 

その後、私はホテルやオフィス 間の結合テーブルであるパー​​トナーシップのテーブルを持っているので、ホテルとオフィスの両方が多くを持っていますパートナーシップ:

class Hotel < ActiveRecord::Base 
    has_many :partnerships 
    belongs_to :account 
    has_and_belongs_to_many :user 

class Office < ActiveRecord::Base 
    belongs_to :account 
    has_and_belongs_to_many :users 
    has_many :partnerships 

、最終的に私のパートナーシップモデル:

class Partnership < ActiveRecord::Base 

    belongs_to :hotel 
    belongs_to :office 

しかし、パートナーシップを持つホテル(@account.partnerships)を持つアカウントとアカウントとの関連性をテストすると空の[]が表示されますが、関連するホテル(@hotel.partnerships)を直接使用すると、パートナーシップ。

has_many :partnerships, through: :hotels, dependent: :destroy 
has_many :partnerships, through: :offices, dependent: :destroy 

答えて

1

has_many :partnerships最初に上書きされます。これらの団体はいけない仕事なぜ

あなたは私に言うことができます。

has_many :hotel_partnerships, through: :hotels, source: :partnerships, dependent: :destroy 
has_many :office_partnerships, through: :offices, source: :partnerships, dependent: :destroy 

has_many :partnerships, through: :hotels, dependent: :destroy # 1 
has_many :partnerships, through: :offices, dependent: :destroy # 2 

これを回避する方法は団体の接頭辞であります