列错误地从HSTORE返回了密钥

时间:2018-11-26 22:32:38

标签: ruby-on-rails ruby ruby-on-rails-4 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键吗?似乎应该知道差异。

1 个答案:

答案 0 :(得分:2)

.store_accessor是一个defines accessors for hstore fields的宏。正如在类主体内部所称,生成的访问器将覆盖ActiveRecord默认提供的DB列。看起来您不能在模型中具有相同名称的存储字段和列。