Activerecord OR条件为Joined表的属性

RMc*_*irn 1 mysql sql activerecord ruby-on-rails 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)
    
    Run Code Online (Sandbox Code Playgroud)

以上返回错误

  PG::AmbiguousColumn: ERROR:  column reference "user_id" is ambiguous
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*pka 5

user_idtrips表中有列,所以PG在你写的时候不知道你的意思user_id = ....您需要指定表名,如下所示:

Task.joins(:trip).where('tasks.user_id = :id OR trip.booker_id = :id', id: self.id)
Run Code Online (Sandbox Code Playgroud)