Rails 3.1Rails: как усреднять несколько записей в базе данных после создания
Я упрощу свое приложение, чтобы ответить на мой вопрос.
У меня есть две таблицы: товары и обзоры
Items имеет столбец «AVERAGE_RATING» и обзоры имеет колонки «ITEM_ID» и «Рейтинг»
Для каждого элемента, я хотел бы хранить средний рейтинг для соответствующих обзоров. Хотя я не могу понять это, я чувствую, что я хочу сделать, это добавить что-то к созданию и методы обновления в обзорах контроллер по линиям:
@review = Review.find(params[:id])
@item = Item.find(@review.Item_ID)
reviews_to_sum = Reviews.find_by_item_id(@item.id)
@item.Average_Rating = reviews_to_sum.Rating.sum/reviews_to_sum.count
Я признаю, однако, что выше вероятно, не близко к правильному ... Я новичок, и я застрял.
И я хочу сохранить Average_Rating в базе данных, а не вычислять его, когда мне это нужно, по целому ряду причин.
Откуда вы получаете имена столбцов, такие как 'Item_ID'? ActiveRecord предпочитает 'item_id' по умолчанию и метод тот же. Капитализация в Ruby обычно относится к константам. – tadman
Да, я использовал их, потому что я не думал, когда я изначально построил структуру базы данных. Я мог бы перенести все из них в нижний регистр, но капитляция действительно проблема или просто нестандартная? –
Это просто будет выглядеть нерегулярно в настоящее время и в будущем, поэтому, чем скорее вы сможете приблизиться к стандартизации, тем лучше. У вас всегда должна быть веская причина идти против зерна. Это также означает, что вам не придется переопределять параметры внешнего ключа во всех отношениях. – tadman