1

しばらくの間、データベースに住所テーブルがあり、最近、Geocoder gem (sweet gem) に出会いました。とにかく、緯度と経度の両方の列を含めるようにモデルを編集し、各レコードが何を想定しているかを指定したgeocoded_byので、現在緯度がゼロになっているテーブル内のすべての住所を単純にジオコーディングしたいと思いますそして経度。

コマンドを実行するだけで、Railsコンソールでそれを理解したと思いました:

    Address.all.each{ |address| address.geocode }

これにより、緯度と経度の列が入力された各エントリが返されますが、後で個々の要素を調べると、緯度と経度はまだゼロです (つまり、レコードは実際には更新されていません)。address.geocode!たぶんうまくいくと思いましたが、それは . を返しましたNoMethodError

これは単純なものでなければなりませんが、私はそれが何であるかを知らないほど経験が浅いようです... ああ、もう少しいじって私はそれを理解しました:

解決

    Address.all.each{ |address| address.update_attributes(latitude: address.geocode[0], longitude: address.geocode[1]) }
4

1 に答える 1

5

単に実行する

    Address.all.each{ |address| address.geocode }

データベース内のレコードを実際に変更するわけではありません。

解決

使用する必要がありますupdate_attributes:

    Address.all.each{ |address| address.update_attributes(latitude: address.geocode[0], longitude: address.geocode[1]) }

Geocoder に組み込まれているより迅速な解決策があるかもしれませんが、これは問題に対する迅速な解決策でした。他の人に役立つことを願っています!

于 2013-02-22T16:39:52.633 に答える