rails has_many :通过关联不起作用
rails has_many :through association doesnt work
我有一个问题 has_many 通过关联。
我有一个账户模型,里面有很多办公室和酒店
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
然后我有一个合作伙伴关系 table 这是酒店和办公室之间的联合 table
因此酒店和办公室都有很多合作伙伴:
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
第二个 has_many :partnerships
覆盖第一个。
has_many :partnerships, through: :hotels, dependent: :destroy # 1
has_many :partnerships, through: :offices, dependent: :destroy # 2
解决这个问题的一种方法是给关联添加前缀:
has_many :hotel_partnerships, through: :hotels, source: :partnerships, dependent: :destroy
has_many :office_partnerships, through: :offices, source: :partnerships, dependent: :destroy
我有一个问题 has_many 通过关联。
我有一个账户模型,里面有很多办公室和酒店 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
然后我有一个合作伙伴关系 table 这是酒店和办公室之间的联合 table 因此酒店和办公室都有很多合作伙伴:
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
第二个 has_many :partnerships
覆盖第一个。
has_many :partnerships, through: :hotels, dependent: :destroy # 1
has_many :partnerships, through: :offices, dependent: :destroy # 2
解决这个问题的一种方法是给关联添加前缀:
has_many :hotel_partnerships, through: :hotels, source: :partnerships, dependent: :destroy
has_many :office_partnerships, through: :offices, source: :partnerships, dependent: :destroy