将表单对象的属性委托给它所包含的模型

时间:2013-10-14 17:59:46

标签: ruby-on-rails ruby-on-rails-3 forms model

我已经将一些复杂的嵌套对象创建分解为我用于new / createedit / update的表单对象。

对于edit表单,我需要公开模型中已存在的值。它是一个具有大量属性和关联的厚实模型,我需要通过编辑表单公开其中的大部分内容。显然,我可以为从模型中提取值的每个人编写getter:

def example
   @model.example
end

或使用委托:

delegate :example, to: @model

但这两种解决方案都涉及很多重复。

这是我第一次使用表单对象进行edit / update方案,而且我一直无法找到一个单独的例子来阻止(每个例子似乎都害羞远离这个方面并坚持使用new / create表单对象,其中需要一个空表单)。

因此,在用于编辑表单的表单对象中,我应该如何向表单公开模型的属性和关联?

1 个答案:

答案 0 :(得分:1)

您可以在表单对象上实现method_missing,但我认为这违反了通过表单对象向表单公开明确API的想法。

我认为重复进行一切都很好,这是一个映射层。在99%的案例中,它们都是重复的。