1

私はポリモーフィックなロケーションモデルを持っています:

class Location < ActiveRecord::Base
  acts_as_mappable
  before_validation :geocode_address, :on => :create
  belongs_to :locatable, :polymorphic => true
end 

そして、それを参照する User モデル:

class User < ActiveRecord::Base
  acts_as_mappable :through => :location
  has_one :location, :as => :locatable
end 

Railsコンソールで場所をユーザーに割り当てる正しい方法は何ですか? 次のことを試みると、エラーが発生します。

l = Location.create(:full_address=>'123 maple street, chicago, il')
u = User.create(:username=>'foo') # => ArgumentError: You gave location in :through, but I could not find it on User.

ユーザーに場所を割り当てる機会がありません。

「acts_as_mappable :through => :location」命令を削除すると、問題なく Location を割り当てることができます。

l = Location.create(:full_address=>'123 maple street, chicago, il')
u = User.create(:username=>'foo')
u.location = l
4

1 に答える 1

1

:location の定義は、その使用法に先行する必要があります:

class User < ActiveRecord::Base
  has_one :location, :as => :locatable
  acts_as_mappable :through => :location
end 
于 2011-02-11T17:20:06.533 に答える