2012-02-18 101 views
1

好吧,我所得到的是两种模式...如何计算满足相关模型中条件的记录?

Jiraissue:

class Jiraissue < ActiveRecord::Base 
    # JIRA uses a singular table name for this model 
    set_table_name 'jiraissue' 
    has_one :severity 
end 

严重性:

class Severity < ActiveRecord::Base 
    belongs_to :jiraissue 
end 

我想要做的就是让所有的计数Jiraissues其中jiraissue.severity =“S1”

现在事实证明,jiraissue表有一个优先列,所以我可以在模型中拉这个技巧...

Jiraissue:

class Jiraissue < ActiveRecord::Base 
    # JIRA uses a singular table name for this model 
    set_table_name 'jiraissue' 
    has_one :severity 

    def self.count_priority(priority) 
    where("PRIORITY = ?",priority).count() 
    end 

end 

然后在视图中做这样的事情......

<%= (1..4).map { 
    |priority| Jiraissue.biit.bugs.recent.count_priority(priority) 
    }.inspect %> 

我怎样做类似的Jiraissue获得count_severity方法的东西吗?

这是行不通的(我也不会指望它)...

def self.count_severity(severity) 
    where("severity = ?",severity).count() 
    end 

但我完全糊涂了。

+0

我太完全困惑了;)...''jiraissue.severity'会返回Severity类的关联对象吗?你如何比较'jiraissue.severity =“S1”'? – nkm 2012-02-18 04:10:41

回答

0
Jiraissue.joins(:severities).where(:severities => {:severity => "S1"}).count 
+0

Hooray !! Jiraissue.joins(:severity).where(:severities => {:severity =>“S1”})。count This TOTALLY works!感谢您让我走上正确的道路! – 2012-02-23 22:45:39

0

模式

def self.count_priority(priority) 
    where("PRIORITY = ?",priority).size 
end 

控制器

def index 
    @jiraissues = Jiraissue.count_priority('S1') 
end 

不工作?

+0

不好,那不行,因为优先级不是jiraissue表中的列。我想布恩的答案可能就是我正在寻找的东西。 – 2012-02-21 16:43:03