【发布时间】:2016-09-12 21:44:41
【问题描述】:
我正在尝试查询对象的关联,并且只返回所有关联都具有特定值的对象。例如,如果一个 User 有一个 memberships 关联,并且 members 有一个 active(boolean) 字段,我想返回一个包含所有只有 active: false 的会员资格的用户。
我现在正在处理的查询是:
User.includes(:memberships).where(memberships: {active: false})
但是,这给了我所有具有非活动成员资格的用户,以及同时拥有 active: false 和 active: true 成员资格的所有用户。我尝试对此做一个额外的 .where.not ,但当然,它返回了同一个组。
我考虑过映射用户集合并创建一个新数组,将具有活跃成员资格的用户踢出,但我需要将最终值保留为 AR 集合,因为我继续在控制器中进一步查询它。
我更愿意为此坚持使用 ActiveRecord,但如果它不可行而我需要使用 SQL,我也愿意。
任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: ruby-on-rails-4 activerecord associations