【问题标题】:Activerecord OR condition for a Joined table's attribute联接表属性的 Activerecord OR 条件
【发布时间】:2014-02-21 14:48:06
【问题描述】:

我想写一个查询返回

  • user_id = self.id 的所有任务 或
  • 相关行程的 booker_id = self.id 的所有任务

    Task.joins(:trip).where('user_id = ? OR trip.booker_id = ?', self.id, self.id)
    

以上返回错误

  PG::AmbiguousColumn: ERROR:  column reference "user_id" is ambiguous

任何帮助/解释将不胜感激

【问题讨论】:

  • 您必须为列 user_id 指定表。所以试试Tasks.user_id。如果您有两个具有相同标题的列,则查询计划器将不明确选择哪个表。

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


【解决方案1】:

您的trips 表中有user_id 列,因此当您编写user_id = ... 时,PG 不知道您的意思。您需要指定表名,如下所示:

Task.joins(:trip).where('tasks.user_id = :id OR trip.booker_id = :id', id: self.id)

【讨论】:

    猜你喜欢
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    相关资源
    最近更新 更多