2013-03-13 35 views
1

在Ruby on Rails的模型类:钢轨的ActiveRecord模型对象设置实例变量并没有工作

class DeliveryItem < ActiveRecord::Base 
    attr_accessible :state 
end 

item=DeliveryItem.new 
item.instance_variable_set "@name","apple" 

NoMethodError: undefined method 'name' for #

如何使这项工作?

+0

使用item.instance_variable_get“@name” – Charlot 2013-03-13 06:37:37

+0

attr_accessible:状态:命名 – 2013-03-13 06:54:55

回答

5

你可以试试这个:

item.instance_variable_set(:@attributes, {'name' => 'apple'}) 
+0

感谢ü!它真的向我展示的方式:) – Charlot 2013-03-13 10:48:34

1

的错误意味着你没有name属性为DeliveryItem。这意味着name没有设置方法,或者没有name列。因此,要解决这个问题,你必须要么

  • 添加name列或
  • 创建name
  • 使用attr_accessorattr_writer setter方法做的工作对你

将以下内容添加到您的模型中

class DeliveryItem < ActiveRecord::Base 
    attr_accessor :name 
end 

那么你应该能够使用你的代码

item = DeliveryItem.new 
item.instance_variable_set "@name","apple" 

# or just use item.name= 
item.name = 'apple' 
+0

谢谢你的帮助,我想设置的属性不固定:) – Charlot 2013-03-13 10:59:06

相关问题