gpt4 book ai didi

ruby-on-rails - has_one 通过与条件关联

转载 作者:行者123 更新时间:2023-12-03 22:40:08 28 4
gpt4 key购买 nike

我有 3 个相关的表/模型。我想检索组织派对的用户,给定一个派对记录,一个带有 bool 值的连接表 organized列和用户表。

迄今为止我最好的尝试(经过多次摆弄后,这对我来说最有意义)。我省略了不相关的列。

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.)
我知道我可以通过实例方法来做到这一点,但考虑到使用的频率类型,我的应用程序将从将此作为关联中受益匪浅。

最佳答案

正如错误消息所说,您不能通过 has_many 获得 has_one。

如果组织者标志在加入记录上,您可以(相反)这样做...

has_many :parties_users
has_many :users, through: :parties_users, source: :user
has_one :main_party_user, -> {where organizer: true}, class_name: 'PartiesUser'
has_one :organizer, through: :main_party_user, class_name: 'User'

关于ruby-on-rails - has_one 通过与条件关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49366460/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com