1

在 Ruby on Rails 模型类中:

class DeliveryItem < ActiveRecord::Base
  attr_accessible :state
end

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

NoMethodError:未定义的方法“名称”#

我该如何进行这项工作?

4

2 回答 2

5

你可以试试这个:

item.instance_variable_set(:@attributes, {'name' => 'apple'})
于 2013-03-13T07:01:54.067 回答
1

该错误意味着您没有name. DeliveryItem这意味着没有 setter 方法,name或者您没有name列。所以要解决这个问题,你必须要么

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

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

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'
于 2013-03-13T07:06:26.090 回答