Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails活动模型-仅作用域对象,其具有多个关系中的现有成员_Ruby On Rails_Activerecord_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails活动模型-仅作用域对象,其具有多个关系中的现有成员

Ruby on rails Rails活动模型-仅作用域对象,其具有多个关系中的现有成员,ruby-on-rails,activerecord,ruby-on-rails-3,Ruby On Rails,Activerecord,Ruby On Rails 3,起初这看起来很琐碎,但我现在有一段时间不能把它做好。这种关系微不足道 class Project < ActiveRecord::Base has_many :tasks end class Task < ActiveRecord::Base belongs_to :project end 作用域:having_tasks,:joins=>:tasks,:select=>'distinct projects.*',:conditions=>'tasks.status>0'

起初这看起来很琐碎,但我现在有一段时间不能把它做好。这种关系微不足道

class Project < ActiveRecord::Base
  has_many :tasks
end

class Task < ActiveRecord::Base
  belongs_to :project
end

作用域:having_tasks,:joins=>:tasks,:select=>'distinct projects.*',:conditions=>'tasks.status>0'

您可以在作用域(在项目模型中)中编写此命令:作用域:with_tasks,:joins=>:tasks,:conditions=>'tasks.project\u id'然后您可以使用:@projects=projects.with_tasksy您是对的,我只是没有注意到标题,也没有把它作为范围来写;)当您打开几个选项卡并浏览所有选项卡时,就会发生这种情况。我的badJoin自动添加给定的条件,因此不需要添加:如上所述的条件。此查询的问题是,它为任何给定项目返回多行。分组实际上解决了这个问题,但Postgress希望我将所有30个字段添加到GROUPBY子句中,这是我不太理解的。最重要的是,我把问题搞砸了。我真正需要的是带有特定条件的ISTASK(更新的问题)。你是对的-没有必要添加:如上所述的条件。默认情况下,联接执行内部联接,这意味着它只选择具有任务的项目。你要做的是只选择不同的项目。我已经更新了我的答案。希望有帮助:)好的,这实际上解决了问题。现在,我为项目创建了一个实例方法,如果有打开的任务(task.status>0),它将返回true,并对上面的查询结果执行简单的“Array.select”,以获得我需要的最终结果。您知道如何通过一个SQL查询来实现这一点吗?
 task.status > 0