【问题标题】:Column mistakenly returning the key from HSTORE列错误地从 HSTORE 返回密钥
【发布时间】:2019-04-28 15:07:36
【问题描述】:

好的,我这里有一个奇怪的。 在 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 键吗?似乎它应该知道差异。

【问题讨论】:

    标签: ruby-on-rails ruby postgresql activerecord hstore


    【解决方案1】:

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

    【讨论】:

    • 可能更好地链接到official docs 和 GitHub 存储库(如果您需要特定版本的 Rails),APIDock 已经非常过时并且显然被放弃了。
    • 完成,感谢您指出这一点,@muistooshort。我不知道 APIDock 被放弃了(太糟糕了:|)
    • 谢谢@mrzasa,感激不尽!
    • 是的,很遗憾,cmets 很方便,但 Rails 4.2.7 和 Ruby 1.9.3 (!) 有点古老。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2020-02-01
    • 2014-08-05
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多