にフォーラムと複数のサブ投稿の投稿が含まれている投稿モデルがSTIの仕組みを理解しています。 'ordinaryUserPost'と 'adminUserPost "などRails:親テーブル内の単一のテーブル継承とfind(:all)
は今、私は、例えば
class Post < ActiveRecord::Base
end
class AdminUserPost < Post
def background_color
'rockstar red'
end
end
class OrdinaryUserPost < Post
def background_color
'pale blue'
end
end
(はいその愚かな例で、サブポストのそれぞれに同じメソッドを定義したいのですが、この方法は、それぞれのケースで別の何かをするだろう )。今私のスレッドコントローラで私はPost.findを行います (:all)レンダリングする必要がある投稿のリストを表示しますが、 AdminUserPostやOrdinaryUserPostではなくPostのオブジェクトです - だから私は 私のbackground_color方法!
Post.find(:all)
を得られた配列にAdminUserPostのリストと OrdinaryUserPostオブジェクトを取得:私は
私が行うことができますとにかくあります... 別途ユーザー投稿の各タイプに検索を行う必要があります投稿オブジェクトの代わりに?
または適切なAdminUserPostとOrdinaryUserPostの私の投稿オブジェクトを 'キャスト'するいい方法がありますか?
EDIT:予想通り
これは動作します - あなたはPostクラスに「タイプ」という列を持っていました。
self.inheritance_column = 'post_type'
(この例ではAdminUserPostとOrdinaryUserPost)すべての子モデルではと親(ポスト)に:あなたの列は、このような「post_type」のように何かを、と呼ばれているなら、あなたは追加する必要があります。
ありがとう、
スティーブン。
DBにはどの種類の投稿があるかを区別するためのフィールドがありますか? – Miquel