2016-09-20 66 views
0

我有一个有关系的用户的台式Task - 作为asignee和记者使用“包括” SQL Rails的模型内部查询

class Task < ActiveRecord 
    belongs_to :assignee, class_name: 'User' 
    belongs_to :reporter, class_name: 'User' 
end 

在SQL我想选择任务,其中受让人具有特定名称

Task.includes(:assignee, :reporter).where('assignee.first_name = ?', 'Filip') 

但此查询提出:

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: missing FROM-clause entry for table "assignee" 

我可以打电话

Task.includes(:assignee, :reporter).where('user.first_name = ?', 'Filip') 但它从两个受让人和记者

如何添加在where子句仅参考受让人关系条件返回记录?

+2

出于好奇,什么是'模型:'用户'选项?我会假设它应该是'class_name:'User'',但可能是我错过了什么 –

+0

@AndreyDeineko好抓,我的意思是class_name。我用手写这个例子:) –

回答

0

如果Assignee's表名是assignees,你可以写这样的:

Task. 
     includes(:assignee, :reporter). 
     where('assignees.first_name = ?','Filip'). 
     references(:users) 

希望能帮助你。