我對這一切都很陌生,所以請假設我的知識最糟糕。關於在update_attribute中使用變量而不是符號
record = tablename.new
result["top"].each do |r| #result is the answer from a variable length JSON
if ActiveRecord::Base.connection.column_exists?(:tablename, r["aaa"]["bbb"])
record.update_attribute(r["aaa"]["bbb"] , r["ccc"])
else
ActiveRecord::Base.connection.add_column(:tablename, r["aaa"]["bbb"] , :integer)
#record.update_attribute(r["aaa"]["bbb"] , r["ccc"])
end
record.save
我得到這個錯誤,因爲我在update_attribute使用變量,而不是一個符號:
undefined method `stringify_keys' for "contents of r["aaa"]["bbb"]":String (NoMethodError)
我不能,雖然使用符號,因爲我真的不知道列的名稱 - 這一切都動態生成的,因爲你可以從這個線看:
ActiveRecord::Base.connection.add_column(:tablename, r["aaa"]["bbb"] , :integer)
總之,我怎麼能適應具有update_attribute可變列名?
String上沒有'stringify_keys'方法。對於這個問題,也不是符號。 –
什麼是完整的堆棧跟蹤? –
嗯,我不知道堆棧跟蹤是什麼,但完整的錯誤是:/home/ubuntu/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.3/lib/active_record/ 「[assign_attributes]:未定義的方法'stringify_keys'爲r [」aaa「] [」bbb「]」的內容:String(NoMethodError) – DharmaTurtle