Рельсы одной модели - много контроллеров - PullRequest
1 голос
/ 26 марта 2012

У меня есть Post модель.Post может быть типом Вопроса, Ответа или Комментария (аналогично структуре StackOverflow).На данный момент контроллер обрабатывает запросы к CRUD любого типа Post.Существует соглашение, что контроллеры должны быть тонкими в Rails, и мой контроллер, похоже, не следует этому из-за операторов case (Post выбор типов и обработка) в любом действии.Итак, мой вопрос: есть ли способ реорганизовать или (еще лучше) разделить Post контроллер для обработки Question, Answer и Comment отдельно, но использовать общие Post представления?Любые ссылки / примеры будут оценены.

1 Ответ

5 голосов
/ 26 марта 2012

Вы можете просто наследовать один контроллер от другого:

Один общий контроллер:

class PostsController < ApplicationController

  #here all the methods common for all types, if any
  def new
    @post = Post.new(:email => current_user.try(:email))
  end
  ...

end

Затем в каждом контроллере:

class AnswersController < PostsController

  self.model_class = Post

  # here all specific methods
  def create
    ...
  end
end

И все просмотры, которые выможете хранить в папке posts или те, которые отличаются в своих папках

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