2013-10-14 50 views
0

我已經將一些複雜的嵌套對象創建分解爲我用於new/createedit/update的窗體對象。將窗體對象的屬性委託給它的模型

對於edit窗體我需要公開已經存在於模型上的值。這是一個擁有大量屬性和關聯的矮胖模型,我需要通過編輯表單暴露大部分這些模型。很顯然,我可以寫干將爲每一個從模型中拉出值:

def example 
    @model.example 
end 

或者使用委託:

delegate :example, to: @model 

但是這些解決方案都涉及到大量的重複。

這是我第一次對edit/update場景使用表單對象,並且我一直無法找到一個單獨的示例(每個示例都似乎迴避該方面並堅持使用一個new/create窗體對象,其中一個空的窗體是預期的)。

因此,在用於編輯表單的表單對象中,應該如何將模型的屬性和關聯展現給表單?

回答

1

你可以在你的表單對象上實現一個method_missing,但我認爲這與通過表單對象向表單暴露一個明確的API的想法相反。

我認爲可以進行一些重複,這是一個映射層。他們在99%的案件中重複。

+0

謝謝。任何時候我都在重複一些事情,我的靈感開始刺痛。我猜如果我自動化映射,那麼它本身就是一個直接套接字,我想如果一切都是直接映射的,那麼所有的表單對象只是介於模型和表單之間的相同耦合。 – Undistraction

+0

是的,確切地說。如果它與模型密切相關,就沒有理由創建一個從對象。 – phoet

相關問題