我明白STI是如何工作的,因爲我有一個Post模型, 包含論壇上的帖子和 'ordinaryUserPost'和'adminUserPost 「等Rails:單表繼承和發現(:所有)在父
現在,我想在每個子職位的定義相同的方法,但 方法會做一些在每種情況下不同的,例如
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 (:所有),它給了我需要呈現的帖子列表,但他們是 '發佈'的對象,而不是AdminUserPost或OrdinaryUserPost - 所以我不能 只是讓我的background_color方法!我會做一個找到 每種類型的單獨用戶後...
反正我可以這樣做:
Post.find(:all)
,所得陣列中獲得AdminUserPost列表和 OrdinaryUserPost對象而不是Post對象?
或者有沒有一種很好的方式將我的Post對象根據需要轉換爲AdminUserPost和OrdinaryUserPost?
編輯:
可正常工作 - 只要你有一個在Post類被稱爲「類型」一欄。如果列被稱爲別的東西,如「post_type」,那麼你需要添加:
self.inheritance_column = 'post_type'
中的所有子模型(AdminUserPost和OrdinaryUserPost在這個例子中)和父母(POST)。
謝謝,
Stephen。
你有沒有在數據庫中的任何領域來區分哪些職位是哪種類型? – Miquel 2009-04-08 22:19:19