2
我有一个用户带数据库字段的模型'remark'。我使用Postgres作为数据库,'备注'字段的类型为HSTORE。所以'备注'会存储一个包含额外用户信息的散列。在Rails中使用Postgres HSTORE的商店
正如有人建议我增加了一个商店,这样我的“用户”模式:
class User < ActiveRecord::Base
store :remark, accessors: [ :info ]
#some code
end
现在我可以在@ user.remark [“信息”]获得的价值通过这个访问'@ user.info'。这工作正常。但是,当我尝试设置和保存这样一个新值:
@user.info = "some info"
@user.save
我得到以下错误:
ActiveRecord::StatementInvalid: PG::InternalError: ERROR: Syntax error near '!' at position 4
是否有可能使用HSTORE型databasefield这样?我究竟做错了什么?
您发布的代码看起来没问题。你确定这个例外来自设置hstore值吗?你有没有可能会引发错误的回调?生成的sql更新命令的样子是什么(在控制台尝试或查看您的rails日志)。 –
SQL(0.8ms)UPDATE“users”SET“remark”= $ 1,“updated_at”= $ 2 WHERE“users”。“id”= $ 3 [[“remark”,“---!ruby/hash:ActiveSupport :: HashWithIndifferentAccess \ ninfo:dit zou moeten werken \ n“],[”updated_at“,”2015-09-28 13:22:04.216668“],[”id“,1]] PG :: InternalError:ERROR:Syntax error靠近'!'在位置4 :UPDATE“users”SET“remark”= $ 1,“updated_at”= $ 2 WHERE“users”。“id”= $ 3 – MDekker
它可以与'@ user.remark ['info'] =“一些信息“; @ user.save'? – omarvelous