2013-08-21 104 views
0

我有一個名爲service_request的Rails模型,我想要添加一個request_form對象。我在我的模型目錄中定義了RequestForm類,儘管它僅用作ServiceRequest類的「has-A/helper」對象,實際上並不是數據庫的一部分。我想添加一個遷移如下:如何在遷移中將自定義對象添加到Rails模型中?

rails generate migration AddRequestFormToServiceRequest request_form:request_form 

但我得到的頂級錯誤:

PG::UndefinedObject: ERROR: type "request_form" does not exist 

我一定來定義這個類放在特定的這個工作?

謝謝

+0

在這裏稍微混淆一下,你真的想在這裏做什麼。遷移用於修改模型下的數據庫表,並且僅限於與數據庫數據類型相對應的特定類型的集合 - 您無法創建自己的自定義類型。如果你試圖建立一個關聯(比如'has_one' /'belongs_to'關聯),你可以添加一個對數據庫的引用,但我甚至不確定你在說什麼。 –

回答

1

Rails遷移用於創建和修改數據庫的結構。

如果您有現有的ServiceRequest模型,並且您想要將RequestForm與其關聯,則應使用模型生成器,而不是使用遷移生成器。

rails g model RequestForm title:string content:text service_request_id:integer 

這將創建一個模型RequestForm和數據庫表request_forms與外鍵參考相關service_request

你必須在車型還增加的關係,如:

class ServiceRequest < ActiveRecord::Base 
    has_many :request_forms 
end 

class RequestForm < ActiveRecord::Base 
    belongs_to :service_request 
end 

的你得到的PG錯誤是因爲你試圖將request_form分配給Postgres數據庫中不存在的自定義類型。

+0

謝謝。我正在做的是有點偏離基礎,現在我得到了它的工作感謝這一點。 –

0

這聽起來像一個模型生成器語法可能無法捕獲您想要的情況。嘗試:

rails generate migration AddRequestFormToServiceRequest 

,然後打開它創建在編輯器中AddRequestFormToServiceRequest遷移文件,並添加你需要手動添加列。

相關問題