Ruby on rails 3 使用方法调用在attr\u访问器中指定属性列表
我想创建大量的属性,如果用这样的方法调用构造,这些属性可以轻松完成Ruby on rails 3 使用方法调用在attr\u访问器中指定属性列表,ruby-on-rails-3,attr-accessor,attr-accessible,Ruby On Rails 3,Attr Accessor,Attr Accessible,我想创建大量的属性,如果用这样的方法调用构造,这些属性可以轻松完成 attr_accessor :attr_list def attr_list [:x1, :y1, :x2, :y2] end 这是行不通的。有没有其他方法可以做到这一点 任何帮助都将不胜感激。解决了这个问题 def self.attr_list [:x1, :y1, :x2, :y2] end attr_accessor *attr_list 说明: Asattr\u访问器是一个方法调用,
attr_accessor :attr_list
def attr_list
[:x1, :y1, :x2, :y2]
end
这是行不通的。有没有其他方法可以做到这一点
任何帮助都将不胜感激。解决了这个问题
def self.attr_list
[:x1, :y1, :x2, :y2]
end
attr_accessor *attr_list
说明:
Asattr\u访问器是一个方法调用,它需要参数列表。所以我们不能按原样传递数组。(*)将数组转换为参数列表
只需要定义一个类方法,返回传递给attr_访问器的属性列表数组
与attr_accessible(或任何类似产品)配合使用也很好 接受的解决方案会产生一个ruby警告: “*”解释为参数前缀 另一种方法是这样做:
def attr_list
[:x1, :y1, :x2, :y2]
end
attr_list.each { |attr| attr_accessor attr }
或
在不引起警告的情况下执行此操作的一种方法:
class MyClass
ATTR_LIST = [:x1, :y1, :x2, :y2]
attr_accessor(*ATTR_LIST)
end
谢谢,非常感谢
class MyClass
ATTR_LIST = [:x1, :y1, :x2, :y2]
attr_accessor(*ATTR_LIST)
end