3

剛開始學習Ruby on Rails。我正在使用RoR 3.我已閱讀此:http://guides.rubyonrails.org/association_basics.htmlRoR - 通過關聯創建的外鍵和遷移或「手動」(或腳手架)?

但我想確保我完全理解。

當創建一個新模型(我現在正在通過腳手架做)時,我應該在那一點指定foreign_key字段,還是關聯句柄完全處理?我認爲協會只是在應用層面,而不是在數據庫層面,是正確的?

所以我認爲我必須做的:

rails generate scaffold post body:text title:string user_id:integer 

因此,在總結,創建博客應用程序時,一定要我在後模型指定user_ID的領域,或做的實際添加用戶模型的has_many :posts照顧到我的數據庫(我的是MySQL),當我遷移?

如果答案是當我首先創建模型時(通過腳手架或手工),我應該這樣做,當我以後決定添加一個外鍵時會發生什麼,我必須添加作爲新遷移中的execute聲明?

回答

5

你是對的。您需要在創建腳手架/模型/遷移時指定外鍵,以便使數據庫正確,並且has_many會爲您考慮模型。因此,對於初始發生支架(或模型)的

,只是做:

rails generate scaffold post body:text title:string user_id:integer 

如你所說,並添加has_many的模型本身。

爲了增加以後,你會作出了新的遷移,像(假設你想使用一代,但你可以編寫自己的遷移):

rails generate migration add_user_id_to_posts user_id:integer 

有了這一點,你可以運行rake db:migrate,然後用has_many或您需要的任何關聯更新模型。

+1

謝謝。我認爲是這樣。只是想確保我沒有錯過任何東西。 – k00k 2011-04-13 14:16:44

+0

+1,包括如何在創建初始腳手架後進行後續生成。在實現這個簡單但關鍵的區別之前,我必須通讀Rails一書中的一半「敏捷Web開發」。 – GuruM 2014-03-04 18:55:55