Rails 3 запрашивает конкретные данные из нескольких моделей - PullRequest
0 голосов
/ 03 мая 2011

Вот две мои модели:

class Account < ActiveRecord::Base
 has_many :values
end

class Value < ActiveRecord::Base
 belongs_to :account
end

В моей модели учетной записи у меня есть атрибут: name и атрибут: type, где я выбираю «чек» или «сбережения».Каждый квартал года я записываю сумму для каждой учетной записи, это относится к модели стоимости.Модель значений имеет атрибут: квартал (1, 2, 3 или 4), атрибут: год и атрибут: количество.Некоторые учетные записи обновляются на каждый квартал года, а некоторые нет.Так, например, у меня может быть текущий счет со значениями для 1, 2, 3 и 4-го квартала 2010 года, а затем еще один текущий счет со значениями только для 1-го и 2-го кварталов.Каждый раз, когда вводится четверть, это всего лишь обновление предыдущего квартала, а не текущая совокупная сумма.

Что я хочу сделать, это запустить запрос, который покажет мне среднее значение моей учетной записи за последний год для определенного типа учетной записи, «проверка» или «сбережения».С чем я борюсь, так это с тем, что я не могу просто выполнить запрос и подвести итоги за весь год, потому что только последнее введенное значение (упорядоченное по: кварталу и: году) является фактическим значением, а не суммой всех кварталов.,Итак, как мне, например, пройтись по всем «проверочным» счетам и извлечь: сумму из последней введенной записи значения, будь то 1-й квартал или 4-й?

1 Ответ

0 голосов
/ 03 мая 2011

Я бы использовал метку времени create_at записи value, чтобы упорядочить результаты. Звучит так, как будто вам нужна самая последняя запись значения в заданном диапазоне. Если вы не можете упорядочить результаты по дате, вы можете просто заказать по :quarter DESC и использовать первый результат?

Не забудьте об использовании функций AVG () на стороне сервера SQL: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_avg

Также проверьте http://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html

...