2009-09-02 15 views
1

私はちょうど私が の建物であるアプリのためにRailsでgeokitを使い始めました。ジオコードされたレコードを取得しましたが、その後、私は をコンソールに入れて、私が何をすればいいのかを見てみましょう。 は次のように表示されます:ユーザーは私の の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

「レストラン」テーブルの定義がわかりますか? –

答えて

5

あなたのマイグレーションでは、代わりに浮動小数点を表示する必要があるので、restaurants.latとrestaurants.lngを文字列(文字可変)として作成しました。 Postgresはそれをキャストしません。列の種類を変更しても問題ありません。

関連する問題