2010-09-22 39 views
1

我正忙於在Rails應用上做一個ruby。在rails上的子模型,子類或子控制器ruby參考文獻

我想製作一個包含文本模型,圖片模型和鏈接模型的模型。每個模型都可以有評論,但我不想爲文本,圖片和鏈接模型製作不同的評論模型。是否有可能讓一個媒體模型女巫有一個子類(或如何稱爲)又名:圖片模型,文本模型和鏈接模型。還是有其他乾淨的方式來做到這一點。 謝謝

回答

2

您可以創建具有polymorphic association評價模型擴展媒體:

# Comment model 
belongs_to :commentable, :polymorphic => true 

# Other model that should has comments 
has_many :comments, :as => :commentable 

可以以上行添加到每個需要的意見模型。爲了具有多態的關聯,你必須分貝comments表的那些列:

commentable_id - int 
commentable_type - string 

您也可以使用一些插件徵求意見,對例如this

+0

是否可以刪除數據庫中的commentable_type(我不會使用@ comment.text,@ comment.picture,@ comment.link)? – kaibakker 2010-09-22 12:11:17

+0

@kaibakker:如果你有3種不同的文本,圖片和鏈接,每個都有自己的id,那麼你需要'commentable_type',因爲你需要知道這個評論屬於哪個模型。如果以@corroded提出的方式進行操作,只能使用'comment_id' - 因此,對於從「Media」模型繼承的3個模型,db中只有一個表。 – klew 2010-09-22 12:56:20

+0

謝謝,那是一個愚蠢的問題! – kaibakker 2010-09-22 13:28:00

0

你說得對。您可以擁有has_many評論的媒體模型。然後你可以做你的圖片,鏈接和文本模式

0

是不是可以添加外部類型的媒體一個新的數據庫表與評論,text_comment,picture_comment和link_comment。他們可以在遷移時完成,唯一的問題是我如何從這些數據庫中調用信息?