Размещение функции - PullRequest
       1

Размещение функции

2 голосов
/ 29 ноября 2011

У меня есть простое применение рельсов. Создание, удаление, редактирование сообщений. И мне нужно оценить этот пост. Где разместить функцию оценки, в модели или контроллере? а почему?

1 Ответ

5 голосов
/ 29 ноября 2011

Обычно это происходит в обоих местах. У вас будет метод 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

Без контроллера вы не можете получить доступ к моделям, он должен пройти через этот уровень, а без модели у вас нет постоянных данных. Они работают вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...