2013-02-19 58 views
12

民間,與ActiveRecord協會生成模型

我正在創建一個應用程序,其中我的問題空間中有兩個實體。一個實體是「生物學家」,另一個實體是「實驗」,現在一個生物學家可以進行許多實驗,每個實驗可以有許多生物學家。

我知道如何使用命令行生成器來創建模式和途徑:

rails generate scaffold Biologist name:string expertise:string last_pub:text 

什麼是添加具有關聯關係的正確方法嗎?生成後是否要更新模型代碼?我不清楚的是,如果我添加一個「belongs_to」關聯後代,這是如何反映在數據庫架構中而不運行遷移或什麼的?在上面的例子中,如果「實驗」屬於「生物學家」,那麼「生物學家」表中將存在外鍵,如果我在模型類後期生成中添加關聯,那麼將如何創建該外鍵。我對rails很新,所以我很抱歉如果這是一個天真的問題。

回答

2

你必須創建一個遷移到biologist_id列添加到experiments表,然後在你的experiments模型添加belongs_to :biologist關係。

您可以找到更多的細節here

40

我認爲你正在尋找的東西像下面這樣:

rails g scaffold Biologist experiment:references 

this article何塞·Valim在那裏他展示瞭如何做到以上,而且在命令行中添加數據庫索引:

+0

爲什麼要從命令行添加數據庫索引而不是遷移本身?隊友的數據庫將不會被索引,如果你離開它的遷移... – Meltemi 2013-02-19 14:38:54

+1

試一試你自己的軌道克腳手架生物學家標題:索引電子郵件:uniq'。您將看到創建索引所需的代碼自動添加到您的遷移中。它節省了一些輸入,並且意味着您可以運行您的遷移並繼續前進。 – stephenmurdoch 2013-02-19 14:42:49

+0

ic ...我誤以爲你建議直接從命令行對模式進行更改。我的錯。 – Meltemi 2013-02-19 18:50:57

0

我會爲每個模型生成一個模型,然後創建一個連接表,因爲你有一個有很多關係。如果你遵循慣例,rails應該理解給定你的連接表的關係。

一般來說,如果您需要修改活動記錄關係,則應該使用has_many或has_and_belongs_to_many關係在模型中執行此操作。