В настоящее время я использую метод find или create для обновления связанной записи, которую я использую для хранения кэшированной информации, но мне интересно, есть ли какой-нибудь более простой альтернативный метод, похожий на build, поскольку объект является отношением has_one
. Проблема только с использованием build_ заключается в том, что в большинстве случаев объект будет существовать и нуждается в обновлении. Я мог бы использовать чек ifs, но задавался вопросом, было ли какое-нибудь лучшее rails-fu, чем я использую в настоящее время.
def self.update_caches(data)
cache = SpaceCache.find_or_create_by_space_id(@space.id)
cache.rating = ((data.ratings.sum / data.ratings.size)/20).round
cache.price_min = @space.availables.recent.average(:minimum)
cache.price_avg = @space.availables.recent.average(:price)
cache.save
end
Бонус:
Я тоже здесь читаю:
http://m.onkey.org/active-record-query-interface
Что методы расчета рельсов в среднем, сумма и т. Д. Будут амортизироваться в 3.1, поэтому я не уверен, стоит ли их заменять?
count(column, options)
average(column, options)
minimum(column, options)
maximum(column, options)
sum(column, options)
calculate(operation, column, options)