我有简单的rails应用程序。创建,删除,编辑帖子。我需要对这些帖子进行评分。 在模型或控制器中放置速率功能的位置?为什么?
答案 0 :(得分:5)
通常这种事情在两个地方都会发生。您将在模型上使用rate
方法,并且您将在控制器中执行rate
操作。
请记住,控制器的主要功能是接收请求,加载适当的模型,根据需要进行调整,并保存结果。通常,模型将实现促进此功能所需的功能。
在控制器中你可以做这样的事情:
class ItemsController < ApplicationController
def rate
@item.rate!(session[:user_id], params[:rating])
end
end
在模型中你会有这样的东西:
class Item < ActiveRecord::Base
has_many :ratings
def rate!(user_id, rating)
self.ratings.create(:user_id => user_id, :rating => rating)
end
end
如果没有控制器,您无法访问模型,它必须通过该层,没有模型,您没有持久数据。他们一起工作。