好的,我在这里有一个怪异的人。 在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
键吗?似乎应该知道差异。
答案 0 :(得分:2)
.store_accessor
是一个defines accessors for hstore fields的宏。正如在类主体内部所称,生成的访问器将覆盖ActiveRecord默认提供的DB列。看起来您不能在模型中具有相同名称的存储字段和列。