ruby-on-rails - 在 Rails activerecord 中使用 where 子句和 join 子句

标签 ruby-on-rails ruby-on-rails-4 rails-activerecord

我想使用 where 子句进行连接查询,但出现语法错误。

在连接中使用 where 子句的正确语法是什么?

Rails docs给出了一个使用具有单个连接的散列的示例,但找不到与我的问题类似的示例。

查询:

User.joins("user_tags").joins("tags").where("tags.value <> 'single'")

错误:

ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR:  syntax error at or near "tags"
LINE 1: ...LECT "users".* FROM "users" user_tags tags...

最佳答案

你可以在你的用户模型中定义

has_many :user_tags
has_many :tags, through: :user_tags

然后就用

User.joins(:tags).where.not(tags: { value: 'single' })

关于ruby-on-rails - 在 Rails activerecord 中使用 where 子句和 join 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31505408/

相关文章:

javascript - Rails 通过 ajax 发出闪光通知

ruby-on-rails - Rails 3. 构建 oauth2 提供程序

ruby-on-rails - Ruby on Rails - 如何对用户上传的 Ruby 文件运行自动化测试?

ruby-on-rails - 使用 CanCan,我如何根据关联/子属性限制能力

ruby - 为什么我在一个明显存在的对象上得到 "undefined method for nil:NilClass"?

ruby-on-rails - redis 无法连接到 rails (ECONNREFUSED)

ruby-on-rails - 优化查询以获得更好的性能

ruby-on-rails - 数据库查询 - 不包括的数组

ruby-on-rails - Rails 4 考勤系统

ruby-on-rails - 如何将两个不同 ActiveRecord 关系的 COUNT(*) 合并到一个 SQL 查询中?