2009-09-02 32 views
1

我剛剛開始使用Rails爲geokit玩一個應用程序,我是 大樓。我有我的記錄geocoded,但後來當我去 到控制檯看看我可以做到這一點,它吹了 與以下:用戶是一個用戶對象與lat和lng從我的 數據庫爲什麼Postgresql會像Geokit一樣失敗?

>> 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 

任何想法如何解決這個問題?谷歌很遺憾沒有太多 幫助,當我試圖搜索我的錯誤消息...

+0

我們可以看看「餐廳」表的定義嗎? – 2009-09-02 23:52:26

回答

5

在您的遷移,您可能創建restaurants.lat和restaurants.lng作爲字符串(字符變化),而他們應該是浮動代替。 Postgres不會爲你投。改變列類型,你應該沒問題。