Ruby on rails Rails使用define_方法进行分配方法不起作用

Ruby on rails Rails使用define_方法进行分配方法不起作用,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个常数 TYPES = %w(car truck) 我想动态地定义自定义赋值方法 TYPES.each do |type| define_method "#{type}s=(objects)" do 但它不起作用, 当我打电话时 myobject.cars=objects 我得到一个错误方法不存在,尽管我可以跟踪它 puts myobject.methods 有办法吗 cars=(objects) 你必须写这样的东西才能让它工作: define_method "#{type}

我有一个常数

TYPES = %w(car truck)
我想动态地定义自定义赋值方法

TYPES.each do |type|
  define_method "#{type}s=(objects)" do
但它不起作用, 当我打电话时

myobject.cars=objects
我得到一个错误方法不存在,尽管我可以跟踪它

puts myobject.methods
有办法吗

cars=(objects)

你必须写这样的东西才能让它工作:

define_method "#{type}s=" do |objects|

你必须写这样的东西才能让它工作:

define_method "#{type}s=" do |objects|
define_方法需要方法名,而不是签名

define_method "#{type}s=" do |objects|
  puts objects
end
define_方法需要方法名,而不是签名

define_method "#{type}s=" do |objects|
  puts objects
end
定义方法符号{block}→ 象征 实际方法在块中,块的参数是实际方法的参数。下面是Ruby文档中的描述。 在接收器中定义实例方法。方法参数可以是进程、方法或未绑定的方法对象。如果指定了块,则将其用作方法体。这个块是使用instance_eval计算的,这一点很难演示,因为define_方法是私有的。这就是为什么我们在本例中使用send hack。

定义方法符号{block}→ 象征 实际方法在块中,块的参数是实际方法的参数。下面是Ruby文档中的描述。 在接收器中定义实例方法。方法参数可以是进程、方法或未绑定的方法对象。如果指定了块,则将其用作方法体。这个块是使用instance_eval计算的,这一点很难演示,因为define_方法是私有的。这就是为什么我们在本例中使用send hack。

pluralize而不是{type}spluralize而不是{type}s