【问题标题】:Delegating A Form Object's Attributes To The Model It Wraps将表单对象的属性委托给它包装的模型
【发布时间】:2013-10-14 17:59:45
【问题描述】:

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

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

def example
   @model.example
end

或者使用委托:

delegate :example, to: @model

但这两种解决方案都涉及大量重复。

这是我第一次在edit/update 场景中使用表单对象,但我一直无法找到一个可以借鉴的示例(每个示例似乎都回避了这方面并坚持使用new/create 表单对象,其中需要一个空表单)。

那么在用于编辑表单的表单对象中,我应该如何将模型的属性和关联暴露给表单呢?

【问题讨论】:

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


    【解决方案1】:

    您可以在表单对象上实现method_missing,但我认为这与通过表单对象向表单公开清晰 API 的想法背道而驰。

    我认为进行一些重复很好,这是一个映射层。它们在 99% 的情况下都是重复的。

    【讨论】:

    • 谢谢。每当我重复某件事时,我的蜘蛛侠感觉就会开始刺痛。我想如果我自动化映射,那么它本身就是一件紧身衣,我想如果一切都是直接映射,那么所有表单对象都只是调解模型和表单之间的相同耦合。
    • 是的,完全正确。如果它与模型如此紧密地绑定,就没有理由创建一个源对象。
    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多