我对 Ruby 和 Rails 都还很陌生,我开始着手一个业余项目并制定最佳实践。我想知道解决此问题的推荐方法可能是什么。
我有一组带有用户给出的相关等级的小部件。在视图中显示小部件列表时,我想显示登录用户给出的分数(如果有的话)。
我的工作看起来像这样,但感觉很脏。在我的控制器中,我抓取了一些小部件和相关的成绩(所有成绩都在其他地方使用),并从这些数据中生成了一个 myGrades 哈希:
@widgets = Widget.include(:grades).limit(20)
@myGrades = Hash[@widgets.collect{ |w| [w.id,w.grades.select{ |g| g.user_id==site_user.id}].delete_if{|k,v|v.nil?}]
在我的 haml 视图中,当呈现小部件时,我有这样的东西:
-if @myGrades.has_key?(widget.id)
.mygrade @myGrades[widget.id].value
但是,我觉得用“我给这个评分了吗?”之类的方法会更好。并在我的评分小部件上“给我我的成绩”,没有 myGrades 中间人。不过,最终会有很多不同的对象被分级,那么我应该如何在 Rails 中最好地实现这些方法,以便它们可以应用于任何分级模型?