【发布时间】:2018-03-19 15:20:28
【问题描述】:
我有 3 个相关的表格/模型。我想检索组织聚会的用户,给定一个聚会记录、一个带有布尔值organized 列的连接表和一个用户表。
到目前为止我最好的尝试(在 much 摆弄之后,这对我来说最有意义)。我省略了不相关的列。
class Party
# party_id
has_many :parties_users
has_many :users, through: :parties_users, source: :user
has_one :organizer,
-> { where organizer: true },
through: :parties_users,
source: :user
class PartiesUser
# party_id
# user_id
# organized:bool
belongs_to :party
belongs_to :user
class User
# user_id
has_many : parties_users
上述设置引发了以下错误,老实说,我并不完全理解:
ActiveRecord::HasOneThroughCantAssociateThroughCollection (Cannot have a has_one :through association 'Party#organizer' where the :through association 'Party#parties_users' is a collection. Specify a has_one or belongs_to association in the :through option instead.)
我知道我可以通过实例方法来做到这一点,但考虑到使用频率类型,我的应用程序将极大地受益于将其作为关联。
【问题讨论】:
-
我觉得
parties_users不应该包含与谁组织聚会有关的数据,但聚会本身应该有belongs_to :organizer, class_name: 'User'(或者如果你想要多对-很多) -
这实际上是我目前的实现,但它也导致了一堆混乱的查询,我必须手动合并连接表中的用户和组织者
标签: ruby-on-rails activerecord ruby-on-rails-5 rails-activerecord