Ruby on rails 查找成员资格为false的用户
我有一个用户表和一个帐户表。然后,我有一个account\u memberships表,该表是一个针对用户和帐户的have\u MUN TO表。我正在尝试使用当前的_帐户,并查找所有管理员等于false的用户。account_memberships表具有admin属性。有人知道如何质疑这一点吗 这是我的密码 当前方法。 这将返回Ruby on rails 查找成员资格为false的用户,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个用户表和一个帐户表。然后,我有一个account\u memberships表,该表是一个针对用户和帐户的have\u MUN TO表。我正在尝试使用当前的_帐户,并查找所有管理员等于false的用户。account_memberships表具有admin属性。有人知道如何质疑这一点吗 这是我的密码 当前方法。 这将返回undefined methodfind_by'for的错误#` 总而言之:帐户通过帐户成员身份拥有许多用户。对用户也是如此。account_成员身份的admin属性为布
undefined method
find_by'for的错误#`
总而言之:帐户通过帐户成员身份拥有许多用户。对用户也是如此。account_成员身份的admin属性为布尔值。如何查找特定帐户中account_membership属性设置为false的所有用户?任何帮助都很好,谢谢 相反:
member.find_by(admin: false)
做:
相反:
member.find_by(admin: false)
做:
到目前为止,主要问题是:
member = u.account_memberships.find_by(account_id: self.id)
# returns instance of AccountMembership (not AR relation)
member.find_by(admin: false)
# find_by should not be called on instance of AccountMembership
基本上,您需要连接两个表,查询如下所示:
User.joins(:account_memberships)
.where('account_memberships.admin': false,
'account_memberships.account_id': self.id)
到目前为止,主要问题是:
member = u.account_memberships.find_by(account_id: self.id)
# returns instance of AccountMembership (not AR relation)
member.find_by(admin: false)
# find_by should not be called on instance of AccountMembership
基本上,您需要连接两个表,查询如下所示:
User.joins(:account_memberships)
.where('account_memberships.admin': false,
'account_memberships.account_id': self.id)
您使用的是SQL还是NoSQL?不建议在循环中运行查询,这将是大数据中昂贵且贪婪的资源。以下是我的一些解决方案: SQL查询
membership_ids = User.joins(:account_memberships).
where('... your users query ...').
where('account_memberships.admin' => false).
distinct('account_memberships.id')
account_memberships = AccountMembership.where("id IN (?)", membership_ids)
user_ids = User.where(...your users query...).distinct(:id)
account_memberships = AccountMembership.in(user_id: user_ids)
NoSQL查询
membership_ids = User.joins(:account_memberships).
where('... your users query ...').
where('account_memberships.admin' => false).
distinct('account_memberships.id')
account_memberships = AccountMembership.where("id IN (?)", membership_ids)
user_ids = User.where(...your users query...).distinct(:id)
account_memberships = AccountMembership.in(user_id: user_ids)
您使用的是SQL还是NoSQL?不建议在循环中运行查询,这将是大数据中昂贵且贪婪的资源。以下是我的一些解决方案: SQL查询
membership_ids = User.joins(:account_memberships).
where('... your users query ...').
where('account_memberships.admin' => false).
distinct('account_memberships.id')
account_memberships = AccountMembership.where("id IN (?)", membership_ids)
user_ids = User.where(...your users query...).distinct(:id)
account_memberships = AccountMembership.in(user_id: user_ids)
NoSQL查询
membership_ids = User.joins(:account_memberships).
where('... your users query ...').
where('account_memberships.admin' => false).
distinct('account_memberships.id')
account_memberships = AccountMembership.where("id IN (?)", membership_ids)
user_ids = User.where(...your users query...).distinct(:id)
account_memberships = AccountMembership.in(user_id: user_ids)
谢谢你的帮助。但它仍然说find_by_admin未定义。@按位,您是否检查了
成员是否在此查询中有值member=u.account\u memberships.find\u by(account\u id:self.id)
。如果member
为nil
yes,则会导致find\u by
错误。会员拥有每个用户的帐户\u会员记录谢谢您的帮助。但它仍然说find_by_admin未定义。@按位,您是否检查了成员是否在此查询中有值member=u.account\u memberships.find\u by(account\u id:self.id)
。如果member
为nil
yes,则会导致find\u by
错误。会员拥有每个用户的帐户成员记录。我看到了。谢谢你的帮助。在我的情况下,我怎么称呼它?我应该做一个示波器吗?好的,我明白了。谢谢你的帮助。在我的情况下,我怎么称呼它?我应该做一个范围吗?可能的副本可能的副本