У меня есть массив объектов, назовем его Indicator
. Я хочу запустить методы класса Indicator (те из def self.subjects
сорт, области и т.д.) В этом массиве. Единственный способ, которым я знаю, запускать методы класса в группе объектов, - это быть ActiveRecord:: Relation. Поэтому я в конечном итоге прибегает к добавлению метода to_indicators
к Array
.
def to_indicators
# TODO: Make this less terrible.
Indicator.where id: self.pluck(:id)
end
Иногда я цепляю немало таких областей, чтобы отфильтровывать результаты в методах класса. Поэтому, хотя я вызываю метод в ActiveRecord:: Relation, я не знаю, как получить доступ к этому объекту. Я могу добраться до содержимого через all
. Но all
- это массив. Поэтому мне нужно преобразовать этот массив в ActiveRecord:: Relation. Например, это часть одного из методов:
all.to_indicators.applicable_for_bank(id).each do |indicator|
total += indicator.residual_risk_for(id)
indicator_count += 1 if indicator.completed_by?(id)
end
Я думаю, это конденсируется до двух вопросов.
- Как преобразовать массив объектов в ActiveRecord:: Relation? Предпочтительно, не делая
where
каждый раз. - При запуске метода типа
def self.subjects
в ActiveRecord:: Relation, как мне получить доступ к самому объекту ActiveRecord:: Relation?
Спасибо. Если мне нужно что-то разъяснить, дайте мне знать.