как сказал @Christoph, если задействовано много логики, реализуйте это как метод в модели;Более того, вы можете реализовать это как scope :
class RptNote < ActiveRecord::Base
def self.performance_metric_notes( past_weeks = 4 )
# this will calculate the last sundays for this week +
# the nth past weeks, defaults to 4 :
last_sundays = (0..past_weeks).map do |n|
(Time.now.beginning_of_week - (1+n*7).days).strftime("%Y-%m-%d")
end
# this will return a relation. Using an array in a where clause
# renders a SQL IN selector.
self
.where( week_of: last_sundays )
.order( :week_of, :market, :measure )
end
end
... это позволит вам уточнить результаты, добавив другие предложения:
RptNote.performance_metric_notes.where( measure: something )
см. Railscasts # 215 для получения дополнительной информации об отношениях и запросах в рельсах 3
edit: wooops, мой плохой, только что увидел, что ваш вопрос был на рельсах 2. Логика остаетсято же самое, за исключением запроса.
Существует еще кое-что: если ваши действия контроллера используют это часто, вы можете установить before_filter на контроллере для автоматической выборки записей:
before_filter :fetch_notes
def fetch_notes
@notes = RptNote.performance_metric_notes
end