ruby-on-rails - Rails 在具有 has_many 关系的模型上使用“where”
问题描述
我有 2 个模型,Account
并且User
class Account
has_many :users
end
class User
belongs_to :account
end
我的问题的相关模型详细信息是:
- 每个 Account 都有一个
subscription
类型,可以是standard
,premium
或enterprise
如何正确列出Users
属于premium
帐户的所有内容?此外,我如何列出所有帐户中的所有用户, premium
因为可以有任意数量的premium
帐户。
我已经尝试了以下几种变化:
Account.where(subscription: "premium").users # undefined method users
User.where(subscription: "premium") # returns nothing
Account.where(subscription: "premium").each do |account|
account.users # seems to return an array?
end
解决方案
你想要的是一个左内连接:
User.joins(:account)
.where(accounts: { subscription: "premium" })
这将返回用户表中与联接表匹配的任何记录。
如何正确列出属于高级帐户的所有用户?
如果您的意思是属于特定帐户的用户,您将#users
在该特定帐户上调用该方法。
account = Account.eager_load(:users).find(1)
account.users
推荐阅读
- c - C - 大小为 1 的无效读取
- reactjs - 如何在 PayPal 结账时预先填写客户详细信息(信用卡、账单信息等)?
- openshift - 为什么 Openshift Online Starter 拒绝激活 pod 超过两周?
- rust - Is it possible to group items that need the same attribute?
- java - 如何使用 Cardboard Java SDK 锚定对象
- google-analytics - 为什么谷歌分析返回具有相同参数的不同数量的结果?
- testng - 无法在 intellij ide 的 testng 测试用例中读取运行时参数
- c# - .NET 配置 API 没有依赖注入
- javascript - 如何从 vuejs 的下拉列表中获取选定的值?
- apache-spark - 火花/纱线:FileNotFoundException