列错误地从 HSTORE 返回密钥

Column mistakenly returning the key from HSTORE

好的,我这里有一个奇怪的。 在 Rails 4.0.13 应用程序中,我添加了一个模型:

store_accessor :transcoding_meta, :state

查看模型(SongVersion)的架构,transcoding_meta的类型确实是hstore

注意,SongVersion上还有一个state列,是字符串列。

s = SongVersion.ready.last
s.transcoding_meta
=> {"state"=>"finished"}

s.state
=> "finished"

实际上,数据库中的状态列按预期保存为 "active"

为什么 Rails 被绊倒了?我真的不能拥有与现有列同名的 hstore 键吗?看来它应该知道差异。

.store_accessordefines accessors for hstore fields的宏。由于它在 class 体内被调用,生成的访问器会覆盖 ActiveRecord 默认提供的数据库列的访问器。看起来您不能在模型中使用同名的存储字段和列。