2014-11-17 20 views
0

我有這樣的模型Rails的HAS_ONE單向的關聯,是不是強制性的

class Agency < ActiveRecord::Base 
    has_one :office 
end 

class Office < ActiveRecord::Base 
    belongs_to :agency 
end 

的問題是我不知道如何建立這樣的關係,這不是強制性的(一些機構可以有辦公室,其他人 - 可以只是在線 - 沒有辦公室的機構)。隨着當添加任何代理我每次都籌建處,即使沒有數據,這樣目前的做法,只是存儲空相關的記錄:

agency = Agency.create!(attributes) 
agency.build_office 
agency.save! 

什麼是這樣做的正確方法?

更新

其實,當我使用的形式這樣這個問題就出現了:

form_for @agency..... 
... 
    fields_for @agency.office ... 

如果數據庫中沒有辦公室的記錄,我得到一些錯誤(從建築物名稱相關的類名或類似的東西)。

或者我應該簡單地在控制器中構建@office對象,並直接將它傳遞給視圖,而不是簡單地傳遞@agency並使用不存在的@ agency.office?

更新

決定分家,形成與獨立的控制器分別獨立的部分,因爲它是真的難受把一切都在一個頁面上。

+0

我不明白你在問什麼。你爲什麼要成立辦公室? –

+0

如果沒有辦公室,我就不能在'form_for @agency'裏面使用''像'fields_for @ agency.office ...'這樣的東西......如果數據庫中沒有辦公室的話。也許,這是不正確的做法(我是Rails的新手)。也許,我不需要那個,但我應該怎麼使用form? – kovpack

+1

好吧,是的,如果你使用'nested_attributes_for',你將需要建立辦公室,但你總是可以使用'OfficesController'創建辦公室,這樣用戶只需要創建一個,如果需要的話 –

回答

0

最好的事情是拒絕使用nested_attributes_for並創建兩個不同的對象。然後在需要時在交易中創建或更新它們。這將消除與真正需要之前構建不必要的東西有關的所有複雜性和問題。