我有一个名为“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
的控制器及其模板
我该如何解决这个问题?
答案 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控制器中拆分和执行不同的操作。
希望这有帮助