我对这一切都很陌生,所以请假设我的知识最糟糕。关于
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?
来容纳变量列名答案 0 :(得分:0)
您可以使用String#to_sym
将字符串转换为符号record.update_attribute(r["aaa"]["bbb"].to_sym , r["ccc"] )
答案 1 :(得分:0)
很抱歉,但没有足够的评论意见。