【问题标题】:comparison of [type] with [other_type] failed on Rails 4, postgresql with hstoreRails 4 上 [type] 与 [other_type] 的比较失败,postgresql 与 hstore
【发布时间】:2014-07-24 04:03:53
【问题描述】:
当从 Rails 3、postgresql 和 activerecord-postgres-hstore gem 升级到 Rails 4、postgresql 和原生 Rails 4 hstore 时,我开始遇到大量测试失败的问题(在升级)由于类型不匹配,例如
String 与 0 比较失败
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-3
ruby-on-rails-4
rails-postgresql
hstore
【解决方案1】:
tldr
Postgresql 将其所有数据存储为字符串,但 activerecord-postgres-hstore gem 允许您将类型定义为访问器的一部分,例如
hstore :data, :accessors => { old_weight: :decimal }
而 Rails 4 中的原生 hstore 不允许您定义类型,因此任何非字符串比较(等)都会失败。很难。
所以在升级到 Rails 4 并转换为原生 hstore 时,任何类型的比较或期望都必须转换/强制执行。