Пользовательские функции Rails РЕДАКТИРОВАТЬ: Обновление изнутри контроллера - PullRequest
0 голосов
/ 19 июля 2010

Прямо сейчас у меня есть это приложение для социальных сетей, где я реализую рейтинги пользователей по категориям. Что я хочу сделать, это:

Всякий раз, когда пользователь голосует за статью, он собирает все голоса за статью и получает среднее значение за баллы / голоса и вставляет это значение в другую модель, которая у меня есть (Рейтинг категории пользователей), теперь мой вопрос Есть ли какой-то способ, которым я могу на самом деле сделать функции и просто вызвать его внутри контроллера для голосования по функции создания? Кроме того, что было бы лучшим способом для достижения среднего, с помощью чистого SQL или есть "рубиновый" способ?

Если кому-то из вас, ребята, понадобится более подробная информация, я буду рад предоставить их, как всегда, спасибо за вашу помощь.

EDIT

Прямо сейчас он вставляется в первый раз, но не будет обновляться, возможно, мне нужен другой метод, это то, что я сейчас имею в контроллере.

 def create
   @vote = Vote.new(params[:vote])
   @user_rating = UserCategoryRating.new
   @vote.user_id = current_user.id

   @article = Article.find(@vote.article_id)
   @user_rating.category_id = @article.category_id
   @user_rating.user_id = @article.user_id
   @user_rating.rating = @article.votes.average('value')

   if @vote.save
     @user_rating.save
     flash[:notice] = "Your vote has been sumbmitted sucessfully"
     redirect_to :controller => :articles
   else
     flash[:error] = "You have already voted for this article!"
     redirect_to :controller => :articles
  end
end

Это правильно устанавливает первый голос, но после этого он не обновляется, возможно, мне нужно проверить, что если голоса существуют, они должны обновиться, но как мне это сделать?

Josh

1 Ответ

2 голосов
/ 20 июля 2010

Вы можете рассчитать среднее с помощью вычислений Active Record:

среднее (имя_ столбца, опции = {})

Просто вызовите эту функцию во время действия создания.1007 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...