2016-05-24 12 views
0

Ich habe ein Problem mit einer has_many durch Zuordnung.rails has_many: durch die Assoziation funktioniert nicht

Ich habe ein Konto Modell, das viele Büros und Hotels account.rb hat:

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 

dann habe ich eine Tabelle, die Partnerschaften eine zwischen Hotel und Büros Join-Tabelle sowohl Hotel- und Büro so viele haben, ist Partnerschaften:

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 

und mein Partnerschaftsmodell schließlich:

class Partnership < ActiveRecord::Base 

    belongs_to :hotel 
    belongs_to :office 

Aber wenn ich die Verbindung zwischen Konto und Partnerschaft mit einem Konto, das Hotels mit Partnerschaften (@account.partnerships) hat testen, bekomme ich eine leere [], während wenn ich direkt das entsprechende Hotel (@hotel.partnerships), ich meine relevante Liste Partnerschaften.

Können Sie mir sagen, warum diese Verbände nicht arbeiten:

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

Antwort

1

Der zweite has_many :partnerships überschreibt die erste.

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

Ein Weg, dies zu umgehen ist es, die Verbände Präfix:

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