【发布时间】:2019-12-20 17:16:54
【问题描述】:
我正在尝试使用Muffin 在我的应用程序中实现表单对象。
在我的控制器中,我这样做:
class MyController < ApplicationController
def new
@form = MyForm.new
end
end
其中MyForm 是一个表单对象,如下所示:
class MyForm < Muffin::Base
attribute :my_attribute
end
我想做的基本上是这样的:
class MyController < ApplicationController
def new
@form = MyForm.new(array_of_attribute_names)
end
end
这样在实例化MyForm 时,我可以按照以下方式进行操作:
class MyForm < Muffin::Base
array_of_attribute_names.each do |name|
attribute name
end
end
我知道上面的方法是行不通的,它暴露了对 Ruby 的 OO 模型缺乏理解。有什么办法可以达到同等效果吗?
【问题讨论】:
-
您需要动态列表吗?
-
你有没有看过
dry-rb生态系统,尤其是dry-validationgem dry-rb.org/gems/dry-validation/1.0 dry-rb.org/gems/dry-schema 它可能有类似的功能,并且是一个需要大量维护的gem,只是一个建议
标签: ruby-on-rails ruby oop