2012-11-18 64 views
24

您好我是Ruby on Rails的新手。我試圖創造一個小博客網站。我有兩個表格帖子和評論。每篇文章都會有很多評論。我使用這些命令生成表格。搭腳手架時創建關係

rails g scaffold Post title:string body:text author:string 
rails g scaffold Comment body:string author:string 

現在我想添加關係到模型類。我在Post類中添加了has_many :comments,在Comment類中添加了belongs_to :title。但是,當我嘗試呼叫post.comments時,我收到一條運行時錯誤,說明SQLException: no such column: comments.post_id。我是否應該在評論中創建遷移並添加post_id,或者有什麼方法可以在腳手架上實現此目的?

+1

請訪問https://coderwall.com/p/f5mdoq尋求幫助。 –

+1

您可以根據當前接受的答案過期來更改此問題的接受答案嗎? Thx – JamieD

回答

9

你絕對是在正確的軌道上。如果您生成Comment支架時添加post_id列你們的關係會再工作(雖然你仍然需要添加has_many :commentsbelongs_to :post

所以更新生成調用是這樣的:

rails g scaffold Comment body:string author:string post_id:integer 
+13

**請參閱下面的更好回答!** – mb21

118

腳手架實際上提供了一種方法來生成的關係,你應該使用:references數據類型

rails g scaffold Comment body:string author:string post:references 

,這將產生一個遷移對於具有post_id字段和索引的評論表。發電機還會將belongs_to :post添加到評論模型。

它不會產生然而,關係的反面,所以你需要

has_many :comments 

添加到自己的Post模型。如果這是您需要的東西,您還需要添加嵌套的資源路由,因爲生成器無法處理此問題。

+16

這應該是接受的答案 –

+1

它回答2年後))) – user2950593

+1

當您手動添加has_many字段您如何生成遷移? – lapinkoira