我有一个金发碧眼的时刻,可能是大脑冻结。
在我的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])
我确信这很容易,任何人都可以帮助我!!?
答案 0 :(得分: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)