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、投稿のタイプ(Regular、Newsなど)を指定するフィールドがあります。
そして、このモデルで複数のコントローラーとビューを使用したいと思います(ニュースでは、通常の投稿とは異なるテンプレートとロジックを使用する必要があります)。
たとえば、名前付きコントローラーとそのテンプレートを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

DBには、Postテーブルのみがあり、Railsはタイプ列を適切なクラスに自動的に設定します。

あなたができるように

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

次に、regular_posts_controller、spcial_posts_controllerなどを作成します。それはあなたが探していたものですか?

于 2012-08-14T04:21:49.273 に答える
1

私があなたを正しく理解しているなら、あなたはまだ1つのコントローラーを使うことができます、あなたはただ異なるビューを必要とします。コントローラでは、if type == regular thenrendercommonpostを使用できます。

そこには必要な数のロジックとコードを配置できますが、タイプに基づいてPostコントローラーでさまざまなことを分割して実行できます。

お役に立てれば

于 2012-08-13T07:25:09.073 に答える