功能的放置

Eug*_*ene 2 ruby-on-rails

我有简单的rails应用程序.创建,删除,编辑帖子.我需要对这些帖子进行评分.在模型或控制器中放置速率功能的位置?为什么?

tad*_*man 5

通常这种事情在两个地方都会发生.你将rate在模型上有一个方法,你将rate在控制器中有一个动作.

请记住,控制器的主要功能是接收请求,加载适当的模型,根据需要进行调整,并保存结果.通常,模型将实现促进此功能所需的功能.

在控制器中你可以做这样的事情:

class ItemsController < ApplicationController
  def rate
    @item.rate!(session[:user_id], params[:rating])
  end   
end
Run Code Online (Sandbox Code Playgroud)

在模型中你有这样的东西:

class Item < ActiveRecord::Base
  has_many :ratings

  def rate!(user_id, rating)
    self.ratings.create(:user_id => user_id, :rating => rating)
  end
end
Run Code Online (Sandbox Code Playgroud)

如果没有控制器,您无法访问模型,它必须通过该层,没有模型,您就没有持久数据.他们一起工作.