如何在一个型号上使用多个控制器?

时间:2012-08-13 07:15:42

标签: ruby-on-rails ruby model

我有一个名为“Post”的模型,其中包含以下属性:

class Post < ActiveRecord::Base
  attr_accessible :content, :published_at, :status, :title, :type, :user_id
  has_many :entity_categories
  has_many :entity_pages
end

帖子有type字段,用于指定帖子的类型(例如,常规,新闻,...) 我想在这个模型中使用多个控制器和视图(新闻应该使用常规帖子中的不同模板和逻辑) 例如,如果type == regular它必须使用名为CommonPost的控制器及其模板 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

migration CreatePostTable

class Post < ActiveRecord::Base
  attr_accessible :content, :published_at, :status, :title, :type, :user_id
  has_many :entity_categories
  has_many :entity_pages
end

class RegularPost < Post
end

class SpecialPost < Post
end

在您的数据库中,您只有一个Post表,Rails会自动将type列设置为正确的类。

就像你可以做的那样

puts RegularPost.new.type
# => "RegularPost"

然后你创建regular_posts_controller,spcial_posts_controller等,你很高兴。这是你在找什么?

答案 1 :(得分:1)

如果我理解正确,你仍然可以使用一个控制器,你只需要不同的视图。在您的控制器中,您可以使用if type == regular然后渲染commonpost。

您可以在其中放置尽可能多的逻辑和代码,但您可以根据类型在Post控制器中拆分和执行不同的操作。

希望这有帮助