在Rails activerecord中使用带有join子句的where子句

时间:2015-07-19 20:04:50

标签: 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...

1 个答案:

答案 0 :(得分:4)

您可以在用户模型中定义

has_many :user_tags
has_many :tags, through: :user_tags

然后只需使用

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