Как подсчитать записи, которые удовлетворяют условию в связанной модели? - PullRequest
1 голос
/ 18 февраля 2012

Хорошо, у меня есть две модели ...

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

Но я совершенно сбит с толку.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2012

модель

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

контроллер

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

Разве это не работает?

0 голосов
/ 18 февраля 2012
Jiraissue.joins(:severities).where(:severities => {:severity => "S1"}).count
...