Ruby 如何使用()将自定义值传递给init_?

Ruby 如何使用()将自定义值传递给init_?,ruby,fabrication-gem,Ruby,Fabrication Gem,允许我们将自定义参数传递给正在制作的类的构造函数: on_init { init_with('something', true) } 但是如何在对象生成时通过传递init_的自定义值呢 对于对象字段,我可以执行以下操作,但是是否有方法通过将值传递到init_ Fabricate(:foobar, attr1: 'something', attr2: true) 据我所知,这是不可能的 def build_instance_with_init_callback(callback)

允许我们将自定义参数传递给正在制作的类的构造函数:

on_init { init_with('something', true) }
但是如何在对象生成时通过传递
init_的自定义值呢

对于对象字段,我可以执行以下操作,但是是否有方法通过
将值传递到
init_

Fabricate(:foobar, attr1: 'something', attr2: true)

据我所知,这是不可能的

  def build_instance_with_init_callback(callback)
    self._instance = _klass.new(*callback.call)
    set_attributes
  end

您被困在制造商定义中使用的内容中。

据我所知,这是不可能的

  def build_instance_with_init_callback(callback)
    self._instance = _klass.new(*callback.call)
    set_attributes
  end

您无法理解在制造商定义中使用的内容。

您可以在制造时使用块语法,就像定义制造商时一样

Fabricate(:foobar, attr1: 'something', attr2: true) do
  on_init { init_with('another', 'thing') }
end

可以在制作时使用块语法,就像定义制作者时一样

Fabricate(:foobar, attr1: 'something', attr2: true) do
  on_init { init_with('another', 'thing') }
end

谢谢Paul,但不幸的是,我使用的类有很多构造函数参数,我希望将它们都保留在制造商定义中,并且在制造时间内只更改1或2。。。有没有办法做到这一点?谢谢Paul,但不幸的是我使用的类有很多构造函数参数,我希望将它们都保留在制造商定义中,并且只在制造时间内更改1或2。。。有办法吗?