attr_accessible for Rails 4动态属性

时间:2016-03-28 14:54:03

标签: ruby-on-rails-4 dynamic-attributes

我正在使用Rails 4并希望定义动态属性,例如:

(0..6).each do |i|
    attr_accessible "attr-#{i}"

现在这是令人费解的说法

NoMethodError: undefined method `attr_accessible' for #<Class:0x007fdeb8911380>

我相信这是因为attr_accessible不再在Rails 4中使用,所以我怎么能实现这个呢? 感谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

dynamic_attributes = {test: 1, test2: 2, test3: 3}
#object could be self depending on the context
object.instance_eval(class << self; self; end) }.class_eval do
  dynamic_attributes.each do |attr, value|
    define_method(attr){ value }
    define_method(attr){|new_value| dynamic_attributes[attr] = new_value }
  end
end