Has*_*tax 1 postgresql join ruby-on-rails rails-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)
Run Code Online (Sandbox Code Playgroud)
下面的查询应该运行并生成[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...
Run Code Online (Sandbox Code Playgroud)
最终,我试图将我在其余代码中使用的集成列入白名单。如果我在 joins 参数中使用复数,Rails 会拒绝查询.joins(:integrations)。
在子句中使用复数形式where。
where(integrations: {..})
Credential.joins(:integration)
.where(user_id: current_user.id)
.where(integrations: {name: 'Twitter'})
.pluck(:id, :name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4128 次 |
| 最近记录: |