2016-06-21 8 views
0

上のRubyで逆ジオコーディング私はジオコーダレールの宝石を使用してバルク逆ジオコードをやろうとして問題が生じています:https://github.com/alexreisner/geocoderPostgreSQLのエラーRailsの

私は次のモデルがあります:

class School < ActiveRecord::Base 
    reverse_geocoded_by :latitude, :longitude 

    has_one :address 
end 

class Address < ActiveRecord::Base 
    belongs_to :school 
end 

そして、次のような移行:

class CreateSchools < ActiveRecord::Migration 
    def change 
    create_table :schools do |t| 
     t.string :name 
     t.integer :address_id 

     t.timestamps null: false 
    end 
    end 
end 

class CreateAddresses < ActiveRecord::Migration 
    def change 
    create_table :addresses do |t| 
     t.string :line_1 
     t.string :line_2 
     t.string :line_3 
     t.string :city 
     t.string :region 
     t.string :country 
     t.string :code 

     t.timestamps null: false 
    end 
    end 
end 

と、私は次の行を実行すると: rake geocode:all CLASS=School REVERSE=true SLEEP=0.5

を、私はこのエラーを取得:

"For geocoding your model must provide a method that returns an address. This can be a single attribute, but it can also be a method that returns a string assembled from different attributes (eg: city, state, and country)."

:私はREADMEを知っ

ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column schools.address does not exist 
LINE 1: SELECT "schools".* FROM "schools" WHERE (schools.address IS... 
               ^
: SELECT "schools".* FROM "schools" WHERE (schools.address IS NULL) ORDER BY "schools"."id" ASC LIMIT 1000 

は、この言います

私は、学校モデルのメソッドか、学校のテーブルの属性のいずれかを必要とし、後者を選択したが、私は何が欠けているのか分からないということを意味した。

ありがとうございます!

答えて

1

逆ジオコーディングレーキタスクは、まだアドレス列のないすべてのレコードをロードすることによって開始されるという問題があります。それはthis scopeを使用しています。

scope :not_reverse_geocoded, lambda { 
    where("#{table_name}.#{geocoder_options[:fetched_address]} IS NULL") 
} 

問題は、あなたが使用することができschools上の任意の列を持っていないです。代わりにreverse_geocoded_by宣言をAddressクラスに移動する必要があります。またaddresses.address列を追加したり、このような何かをするか必要があります。

reverse_geocoded_by :latitude, :longitude, fetched_address: :line_1 

また、あなたがlatitudelongitudeの列を持っていないようです。もちろん、それらはAddressでもなく、Schoolでなければなりません。結局のところ、学校が複数の住所を持つことができれば、どれが孤独なのでしょうか?

+0

説明をいただきありがとうございます! – melancholyfleur

関連する問題