rails has_many:通过关联不起作用

大卫·盖斯玛(David Geismar)

我对通过关联的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

然后我有一个合作伙伴关系表,这是酒店和办公室之间的联接表,因此酒店和办公室都有许多合作关系:

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(@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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

has_many的Rails触摸链:通过关联

Rails关联has_many通过代替HABTM

Rails-通过关联将has_many =>的名称作为字符串获取

Rails 4:has_many的路由:通过关联

Rails 4 + Pundit:在has_many中加入模型授权:通过关联

Rails 4:结合has_many:通过关联与多态关联

通过关联和嵌套模型形式使用has_many选择rails4集合

Rails 5通过关联模型更新has_many

Rails 4-通过关联预加载has_many失败,并且穿透表的lambda条件

如何通过关联对Rails has_many使用单个选择下拉列表?

在has_many中通过关联使用class_name时,Rails自定义ActiveRecord :: Type失败

Rails模型多个has_many:通过关系输出到json

通过has_many关联进行Rails作用域

Rails 4活动记录模型has_many通过关联吗?

通过Rails 4中的关联使用has_many

has_many通过关系可以在Rails中使用4个模型吗?

Rails通过关联删除has_many

Rails has_many通过关联继承问题

has_many:通过关联,shell的Rails控制台中为“ No Method Error”,NoMethodError:#<ActiveRecord :: Relation:>的未定义方法

Ruby on Rails has_many:通过多态关联

has_many中通过关系的连接实体上的Rails字段

Rails关联has_many通过不使用多个模型

Rails:创建不通过关联保存has_many的操作-“回滚事务”

Rails关联has_many和has_many通过相同的STI模型

Rails 5.1 has_many 通过 - 关联字段

Rails has_many 通过关联问题

升级到 rails 5 后通过关联在 has_many 中出现未知列错误

Rails 通过关联查询 has_many

Rails has_many 通过关联删除路径