Activerecord OR条件为Joined表的属性

时间:2014-02-21 14:48:06

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

我想写一个返回

的查询
  • user_id = self.id的所有任务 OR
  • 相关旅行的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

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

1 个答案:

答案 0 :(得分:5)

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

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