如何在 Rails + Postgres 中重命名 hstore 键
How to rename hstore key in Rails + Postgres
如何使用 Postgres 重命名 Rails 4 中的 hstore 键?
User.update_all('hstorename -> oldcolumname: newcolumnname') ???
基于
def change_hstore_key(klass, h, from_key, to_key)
klass.where("#{h} ? '#{from_key}'")
.update_all("#{h} = (#{h} - '#{from_key}'::text) || " \
"hstore('#{to_key}'::text, #{h} -> '#{from_key}')")
end
# usage
change_hstore_key(User, hstorename, oldcolumnname, newcolumnname)
重要:不要将此与任何用户提供的参数一起使用以避免 SQL 注入。对于提供所有数据的迁移等,这应该可以解决问题。
如何使用 Postgres 重命名 Rails 4 中的 hstore 键?
User.update_all('hstorename -> oldcolumname: newcolumnname') ???
基于
def change_hstore_key(klass, h, from_key, to_key)
klass.where("#{h} ? '#{from_key}'")
.update_all("#{h} = (#{h} - '#{from_key}'::text) || " \
"hstore('#{to_key}'::text, #{h} -> '#{from_key}')")
end
# usage
change_hstore_key(User, hstorename, oldcolumnname, newcolumnname)
重要:不要将此与任何用户提供的参数一起使用以避免 SQL 注入。对于提供所有数据的迁移等,这应该可以解决问题。