为什么Postgresql会像Geokit这样失败?

我刚刚开始使用Rails为我正在构建的应用程序玩geokit。 我的记录得到了地理编码,但是当我进入控制台看看我能用它做什么时它会爆炸以下:用户是一个用户对象,我的数据库中有lat和lng

>> Restaurant.find(:all, :origin => user) Restaurant Load (0.0ms) PGError: ERROR: operator does not exist: numeric - character varying LINE 1: ...*, SQRT(POW(111.1819*(-33.872517-restauran... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. : SELECT *, SQRT(POW(111.1819*(-33.872517-restaurants.lat),2)+ POW(76.7136337302943*(151.205536-restaurants.lng),2)) AS distance FROM "restaurants" ActiveRecord::StatementInvalid: PGError: ERROR: operator does not exist: numeric - character varying LINE 1: ...*, SQRT(POW(111.1819*(-33.872517- restauran... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. : SELECT *, SQRT(POW(111.1819*(-33.872517- restaurants.lat),2)+ POW(76.7136337302943*(151.205536-restaurants.lng), 2)) AS distance FROM "restaurants" from /Users/chris/projects/mine/lunchdecider/vendor/rails/ activerecord/lib/active_record/connection_adapters/abstract_adapter.rb: 212:in `log' from /Users/chris/projects/mine/lunchdecider/vendor/rails/ activerecord/lib/active_record/connection_adapters/ postgresql_adapter.rb:538:in `execute' from /Users/chris/projects/mine/lunchdecider/vendor/rails/ activerecord/lib/active_record/connection_adapters/ postgresql_adapter.rb:1019:in `select_raw' from /Users/chris/projects/mine/lunchdecider/vendor/rails/ activerecord/lib/active_record/connection_adapters/ postgresql_adapter.rb:1006:in `select' from /Users/chris/projects/mine/lunchdecider/vendor/rails/ activerecord/lib/active_record/connection_adapters/abstract/ database_statements.rb:7:in `select_all_without_query_cache' from /Users/chris/projects/mine/lunchdecider/vendor/rails/ activerecord/lib/active_record/connection_adapters/abstract/ query_cache.rb:62:in `select_all' from /Users/chris/projects/mine/lunchdecider/vendor/rails/ activerecord/lib/active_record/base.rb:661:in `find_by_sql' from /Users/chris/projects/mine/lunchdecider/vendor/rails/ activerecord/lib/active_record/base.rb:1548:in `find_every' from /Users/chris/projects/mine/lunchdecider/vendor/rails/ activerecord/lib/active_record/base.rb:615:in `find' from /Users/chris/projects/mine/lunchdecider/vendor/plugins/geokit- rails/lib/geokit-rails/acts_as_mappable.rb:138:in `find' from (irb):10 

有什么想法可以解决这个问题吗? 遗憾的是,当我尝试搜索我的错误消息时谷歌帮助不大…

在您的迁移中,您可能创建了restaurants.lat和restaurants.lng作为字符串(字符变化),而它们应该是浮点数。 Postgres不会为你投这个。 改变列类型你应该没问题。