【问题标题】:Using a where clause with join clause in Rails activerecord在 Rails activerecord 中使用 where 子句和 join 子句
【发布时间】:2015-07-19 20:04:50
【问题描述】:

我想使用 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...

【问题讨论】:

  • 你的Useruser_tags 关联吗?
  • 是的,确实有 :)
  • 哇,应该更清楚:请在问题中添加关联。
  • 如果你的关系设置正确,你应该可以像这样加入 joins(:user_tags => :tags)
  • 这将为与数据库记录关联的每个不等于“single”的标签返回一个用户实例。你确定那是你想要的吗?例如,您不希望用户在没有与之关联的“单一”标签的情况下返回?

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


【解决方案1】:

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

has_many :user_tags
has_many :tags, through: :user_tags

然后就使用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多