2

私はhttp://railscasts.com/episodes/273-geocoderで見た方法でジオコーダー gem を使用することに慣れていますが、私のモデルは与えられた例よりも少し複雑になっています。

ここで、2 つのモデルを使用したいと思います:
- "name" 属性を持つ "City"

- "latitude"、"longitude" および "city_id" 属性を持つ "Location"

このように、場所にはデフォルトがあります緯度と経度の値であり、後でそれらを正確にすることができます。

問題は、Location モデルで、その場所が City モデルの名前で geocoded_by であることをどのように指定できるかということです。

私はそのような単純なものを探していました:

geocoded_by :city, :name

また

geocoded_by self.city.name

ご協力ありがとうございました。

編集:現在のモデルは次のとおりです。

class Location< ActiveRecord::Base
  attr_accessible :city_id, :latitude, :longitude
  belongs_to :city
  geocoded_by ??? (how to specify the city.name value ?)
  after_validation :geocode  
end

class City < ActiveRecord::Base
  attr_accessible :name
  has_many :locations
end
4

2 に答える 2

2

それが機能するかどうかはわかりませんが、試すことができます:

geocoded_by lambda{ |obj| obj.city.name }

または、上記が機能しない場合:

geocoded_by :city_name

def city_name
  self.city.name
end
于 2012-10-21T15:49:28.533 に答える
0

has_many2 つのモデル間の関連付けを設定する必要があります。

このガイドでは、その方法を説明しています: http://guides.rubyonrails.org/association_basics.html

于 2012-10-21T10:17:15.063 に答える