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