私はこれらすべてにかなり慣れていないので、私の知識について最悪の事態を想定してください。それにかんする
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 を使用して可変列名を使用するにはどうすればよいでしょうか?