2013-03-13 68 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

相關問題