4

我有一个名为“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及其模板。
我怎么解决这个问题?

4

2 回答 2

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 会自动将类型列设置为正确的类。

就像你可以做的那样

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

然后创建regular_posts_controller、spcial_posts_controller 等,一切顺利。是你要找的吗?

于 2012-08-14T04:21:49.273 回答
1

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

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

希望这可以帮助

于 2012-08-13T07:25:09.073 回答