Rails加入多个条件的查询

时间:2017-03-15 19:59:56

标签: sql ruby-on-rails postgresql join activerecord

我正在尝试查询2表,凭据和集成。

我想检索每个凭据记录WHERE user_id == current_user.id。我还想检索每个集成记录WHERE name == "Twitter"

下面的查询会运行并输出[[4, "Twitter"][3,"YouTube"]]

Credential.joins(:integration).where(user_id: current_user.id).pluck(:id, :name)

下面的查询应该运行并生成[4, "Twitter"],但它会产生错误。

Credential.joins(:integration).where(user_id: current_user.id).where(integration: {name: 'Twitter'}).pluck(:id, :name)

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "integration"
LINE 1: ...ration_id" WHERE "credentials"."user_id" = $1 AND "integrati...

最终,我试图将我在其余代码中使用的集成列入白名单。如果我在连接参数.joins(:integrations)中使用复数,Rails会拒绝查询。

1 个答案:

答案 0 :(得分:2)

where子句中使用复数版本。

where(integrations: {..})

Credential.joins(:integration)
  .where(user_id: current_user.id)
  .where(integrations: {name: 'Twitter'})
  .pluck(:id, :name)