简体   繁体   English

如何在关联模型中计算满足条件的记录?

[英]How do I count records that satisfy a condition in a associated model?

Okay, what I've got is two models... 好的,我有两个模型...

Jiraissue: Jiraissue:

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

Severity: 严重程度:

class Severity < ActiveRecord::Base
  belongs_to :jiraissue
end

What I'm trying to do is get a count of all Jiraissues for which jiraissue.severity = "S1" 我正在尝试获取所有jiraissue.severity =“ S1”的Jiraissues的计数

Now it turns out that the jiraissue table has a column for priority so I can pull this trick in the model... 现在事实证明,jiraissue表具有优先级列,因此我可以在模型中使用此技巧...

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

And then in the view do something like... 然后在视图中执行类似...

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

How do I do something similar for Jiraissue to get a count_severity method? 我如何为Jiraissue做类似的事情以获取count_severity方法?

This just doesn't work (nor would I expect it to)... 这只是行不通(我也不希望如此)...

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

But I'm totally confused. 但是我完全感到困惑。

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

model 模型

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

controller 控制者

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

Doesn't it work? 不行吗

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM