【发布时间】:2012-10-28 21:44:36
【问题描述】:
我对这一切都很陌生,所以请对我的知识做最坏的假设。关于
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/attribute_assignment.rb:69:in
assign_attributes': undefined methodstringify_keys' for "contents of r["aaa"]["bbb"]":String (NoMethodError)
标签: ruby activerecord