多个Ruby on Rails模型关系
我试图通过具有起点和目的地的装运模型来访问位置详细信息。多个Ruby on Rails模型关系
我想访问位置信息通这样的电话:
Shipment.find(###).origin ->
:id => "###", :cs => "Springfield, Mo", :latitude => "#####", :longitude => "####"
Shipment.find(###).dest ->
:id => "###", :cs => "Springfield, Mo", :latitude => "#####", :longitude => "####"
我有以下设置
shipment.rb:
class Shipment < ActiveRecord::Base
belongs_to :user
has_many :vehicles, dependent: :destroy
validates :origin_id, :dest_id, :presence => true
attr_accessible :origin_id, :dest_id, (more attributes...)
end
location.rb
class Location < ActiveRecord::Base
attr_accessible :cs, :latitude, :longitude
geocoded_by :cs
after_validation :geocode, :if => :cs_changed?
has_many :shipments, :foreign_key => :origin_id
has_many :shipments, :foreign_key => :dest_id
end
我觉得是这样的:
has_one :origin, :class => "Location", :origin_id
或
scope :origin, -> (:origin_id) { Location.find(:origin_id)}
它可以
class Shipment < ActiveRecord::Base
...
belongs_to :origin, class: 'Location', foreign_key: 'origin_id'
belongs_to :dest, class: 'Location', foreign_key: 'dest_id'
end
对于老轨
class Shipment < ActiveRecord::Base
...
belongs_to :origin, class_name: 'Location', foreign_key: 'origin_id'
belongs_to :dest, class_name: 'Location', foreign_key: 'dest_id'
end
然后为原点位置
Shipment.find(###).origin
那么对于目标位置
Shipment.find(###).dest
shipment.rb
class Shipment < ActiveRecord::Base
belongs_to :user
has_many :vehicles, dependent: :destroy
validates :origin_id, :dest_id, :presence => true
attr_accessible :origin_id, :dest_id
belongs_to :origin, :class_name => 'Location', :foreign_key => 'origin_id'
belongs_to :destination, :class_name =>'Location', :foreign_key => 'dest_id'
end
'Shipment.last.origin ArgumentError:Unknown key:class' –
您正在使用rails 3或4? –
我正在使用rails 3 –
但它会'belongs_to的:因为出身不是模型 –
@BigAlRubyNewbie的'belongs_to'方法指定关系的名称location'。您可以使用'class_name'选项指定类名('Location')。 –