我有一个用户模型,用户有很多宠物.我希望能够编写一个ActiveRecord查询,在那里我可以 Select 所有有宠物但没有宠物的用户."毛茸茸"的名字

用ActiveRecord写这篇文章最有效的方法是什么?使用直截了当的SQL,它会显示如下内容:

select id from users INNER JOIN pets ON u.id = pets.user_id WHERE pets.name != "fluffy"

推荐答案

这应该是有效的:

User.joins(:pets).where("pets.name != 'fluffy'")

此外,你可能还想阅读官方RoR指南上的following part(第joins页).

Ruby-on-rails相关问答推荐

在PDF生成中渲染 colored颜色

关于关联 has_many 的多级/三重嵌套形式

会话控制器中的某种问题

如何使用继承类 (STI) 获取 Ruby on Rails 类中基类的实例

如何在生成的 HTML 本身中显示部分名称

Ruby on Rails/Activerecord 排序自引用查询?

GroupingError:错误:列必须出现在 GROUP BY 子句中或在聚合函数中使用

使用带有 bootstrap-sass gem 的 Rails 4 无法让 CSS 在 Heroku 上工作

Ruby的自动代码质量工具?

如何将实例变量传递给 RSpec 共享示例

rails 3.2 迁移无法在更改方法中向 create_table 添加索引

File.open,写入和保存?

注册表单上是否需要 CSRF 保护?

Ruby on Rails 的 varchar 迁移问题

Rails - 获取没有 GET 参数的当前 url

activerecord 查找所有未包含在数组中的内容

Rails:从视图内渲染视图(不是部分视图)

Rails 3.0 中的 f.error_messages

如何在 ROR (Ruby) 中显示 PDF?

'respond_to' 格式语句中的 `:location => ...` 和 `head :ok` 是什么意思?