2010-10-23 29 views
2

开始时这似乎很微不足道,但我现在无法正确理解它。这种关系是微不足道的。Rails活动模型 - 仅在has_many关系中具有现有成员的范围对象

class Project < ActiveRecord::Base 
    has_many :tasks 
end 

class Task < ActiveRecord::Base 
    belongs_to :project 
end 

现在我只想获得所有具有一个或多个任务关联的项目。现在要做到这一点没有任何扩展逻辑(最好在一个查询中)。后端在Postgresql上。

编辑:

其实最好的是如果我能得到它具有特定条件的任务项目。像:

task.status > 0 

回答

2

范围:having_tasks,:加入=>:任务:选择=> '不同的项目。*':条件=> 'tasks.status> 0'

+0

你可以在写这篇文章一个范围(在项目模型中): 范围:with_tasks,:joins =>:tasks,:conditions =>'tasks.project_id = projects.id' 然后你可以使用:@projects = Projects.with_tasks – ipsum 2010-10-23 14:35:59

+0

你是对的,我只是没有注意到标题,并没有把它当作范围来写;)当你打开几个标签并且浏览所有标签时会发生这种情况。我的坏 – 2010-10-23 15:00:25

+0

加入automaticaly添加了给定的条件,所以没有必要添加:像上面那样的条件。这个查询的问题是,它返回任何给定项目的多行。分组实际上解决了这个问题,但Postgress希望我将所有30个字段添加到group by子句中,这是我不太了解的。最重要的是,我搞砸了这个问题。我真正需要的是具体条件的任务(更新问题)。 – mdrozdziel 2010-10-24 15:14:37

相关问题