为rails设置实例变量ActiveRecord模型对象不起作用

时间:2013-03-13 06:29:39

标签: ruby-on-rails ruby

在Ruby on Rails模型类中:

class DeliveryItem < ActiveRecord::Base
  attr_accessible :state
end

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

NoMethodError:未定义的方法&#39; name&#39;对于#

我如何使这项工作?

2 个答案:

答案 0 :(得分:5)

你可以试试这个:

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

答案 1 :(得分:1)

错误表示您没有name的{​​{1}}属性。这意味着DeliveryItem没有setter方法,或者您没有name列。所以要解决这个问题,你必须要么

  • 添加name列或
  • name
  • 创建一个setter方法
  • 使用nameattr_accessor为您完成工作

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

attr_writer

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

class DeliveryItem < ActiveRecord::Base
  attr_accessor :name
end