2010-11-07 146 views
17

我已經配置我的database.yml以指向我現有的mysql數據庫rails 3:如何爲現有數據庫表生成模型

我該如何從中生成模型?

rails generate model existing_table_name 

只給出了一個emty模型..

+0

給你一個空的模型?那是什麼意思?你想做什麼? :) – s84 2010-11-07 21:02:44

+0

我期望它包含該表的所有字段和關係,但是我得到的是一個從ActiveRecord :: Base – 2010-11-07 21:04:09

+0

派生的空類,除非您創建自己的腳本,否則不可能做什麼。 – s84 2010-11-07 23:22:05

回答

9

Rails的模型沒有顯示你的領域,但你仍然可以使用它們。嘗試以下操作。假設你有一個名爲MODELNAME模型和一個名爲「名稱」字段,火了Rails的控制檯,輸入:

ModelName.find_by_name('foo') 

假設存在一個數據庫中的名字,你應該看到的結果。

雖然Rails不能推斷出關係,但是如果你的數據庫遵循Rails慣例,那麼它們很容易被添加。

我已經注意到這個特別缺乏明確性的(「魔術」)更新是混亂的新手到Rails的一個來源。您可以隨時查看schema.rb以查看某個地方的模型和所有字段。另外,如果您希望在模型文件中查看每個模型的架構,則可以使用annotate_models gem,它將把db架構置於模型文件頂部的註釋中。

+0

哇,謝謝,我從來不知道這可能發生! ehhe。我今天學到了一些新東西。 – 2012-04-22 02:15:11

+0

生成的rails模型在attr_accessible調用中顯示您的字段。 – holaSenor 2013-08-20 23:17:29

1

ActiveRecord不解析模式定義。它向DBM詢問表格並確定飛行中的字段。

如果您要通過遷移修改表,那麼擁有該模式很有用。 Schema Dumping and You將幫助您轉儲它以用作構建遷移的參考。

ActiveRecord對錶命名做出了一些推測,並且期望id字段是以序列號作爲類型的主鍵。進行遷移將幫助您重構表和/或字段名稱和類型,但您可以通過DBM的命令行執行相同的操作。你並不需要遵循ActiveRecord的風格,但是這樣做有助於避免奇怪的錯誤,並讓AR推斷事情,讓你的生活更輕鬆。

1

可以試試Magic Model Generator

+1

注意:適用於Rails 2,不提供Rails 3。 – 2012-02-14 04:05:38

+3

有沒有人知道任何其他方法,從Rails 3中的現有模式生成關係等模型? – Arosboro 2012-04-20 20:28:18

15

你可以試試Rmre。它可以爲現有模式創建模型,並嘗試根據外鍵信息創建所有關係。

+0

我試過Rmre,但它只創建了模型之間的關係(例如has_many,belongs_to)。它沒有創建模型屬性。 – Nick 2014-10-22 00:15:51

3

你的答案是:

$ rake db:schema:dump 

,將成立一個新的db/schema.db來創建數據庫的架構。

相關問題