0
现在我有这样的社交媒体应用程序,在那里我对每个类别的用户在实施评级里面更新,我想要做什么:Rails的自定义功能编辑:从控制器
每当用户投下一票在一篇文章中,它将抓住文章上的所有投票并作出评分/投票的平均值,并将该值插入到另一个模型中(用户类别评级),现在我的问题是,是否有某种方式实际上可以做的功能,只是在控制器内调用它的投票创建函数?另外,通过纯SQL还是有一种“rubyish”方式,完成平均的最佳方式是什么?
如果你们中的任何一个人需要更多的细节,我会很乐意为他们提供,感谢您的一切帮助。
编辑
现在它插入第一次,但不会更新,也许我需要另一种方法,这是我在控制现在。
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
这已正确设置第一选票,但在此之后,它是不更新,也许我需要验证是否存在票应该更新,但我怎么做到这一点?
乔希
这可行,但有一个小问题,它不会更新。我将编辑我的问题,以查看问题。 – Gotjosh 2010-07-20 13:02:12
如果你只是在创建动作中调用它,那么是的,它只会在插入新记录时发生。如果你想在它之后更新,那么你应该把它放在你的“更新”方法中(如果你使用脚手架,它应该在那里,否则只需要一个名为update的方法来更新你想更新的值)。 – sosborn 2010-07-21 00:13:28
真正的问题是,我把条件放在哪里,如果用户已经对这个类别投票更新,如果不创建? – Gotjosh 2010-07-28 17:48:43