2011-07-29 70 views
0

我有一个金发的时刻,可能是脑冻结。在查找子句中使用关联模型的活动记录查询

在我的rails3应用程序中,我有用户和任务。我的用户有很多的任务......

我已经到期,逾期任务如下:

@due = Task.find(:all, :conditions => ["dueddate >= ? AND AND status = ?", Date.today, false], :include => :taskcategories, :order => "dueddate asc") 

我想在我的任务做检视,是列出与到期的任务的用户...

出于某种原因,我无法摆脱困境。我已经试过,但它不工作:

@task = Task.all 

@user = User.find(:all, :conditions => ["@task.dueddate <= ? AND 
@task.status = ?", Date.today + 7.days, false]) 

我确定这很容易,任何人都可以帮助我!!?

回答

6

我想这应该工作

更新

User.joins(:tasks) 
    .where("tasks.dueddate <= ? AND tasks.status = ?", Date.today + 7.days, false).group(:id) 

这应该使用SQLite和MySQL工作。但是,PostgreSQL要求您提供表格的所有列。如果它是一张小桌子,你可以简单地输入名字。或者你可以将这个方法添加到模型:

def self.column_list 
    self.column_names.collect { |c| "#{self.to_s.pluralize.downcase}.#{c}"}.join(",") 
end 

,改变.group(:id).group(User.column_list)

+0

那太好了!以为我是愚蠢的,事实证明我之前没有加入过。如何才能显示唯一的值 - 我可以在那里看到一些重复的数据。 –