Rails一个型号 - 许多控制器

时间:2012-03-26 11:58:18

标签: ruby-on-rails controller

我有一个Post型号。 Post可以是一种问题,答案或注释(类似于StackOverflow结构)。目前,控制器正在处理任何类型的Post对CRUD的请求。有一个约定,控制器需要在Rails中很薄,而且我的控制器似乎不遵循这个,因为在任何操作中都有case语句(Post类型选择和处理)。所以我的问题是:有没有办法重新组织或(甚至更好)划分Post控制器以分别处理QuestionAnswerComment,但使用共同{{1观点?任何链接/示例都将不胜感激。

1 个答案:

答案 0 :(得分:5)

您可以从另一个控制器继承一个控制器:

一个常见的控制器:

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文件夹中的所有视图,或者与其自己的文件夹不同的视图