Обычно это происходит в обоих местах. У вас будет метод 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
Без контроллера вы не можете получить доступ к моделям, он должен пройти через этот уровень, а без модели у вас нет постоянных данных. Они работают вместе.