Ruby on rails ActiveRecord:地点和路线的哪些关联?
我想关联路线中的位置:一条路线有两个位置(起点和终点)+我需要存储距离btw这两个点。我想知道数据模型是否正确: 我不知道如何解决Rails中的关联Ruby on rails ActiveRecord:地点和路线的哪些关联?,ruby-on-rails,ruby,activerecord,rails-activerecord,data-modeling,Ruby On Rails,Ruby,Activerecord,Rails Activerecord,Data Modeling,我想关联路线中的位置:一条路线有两个位置(起点和终点)+我需要存储距离btw这两个点。我想知道数据模型是否正确: 我不知道如何解决Rails中的关联 class Place < ApplicationRecord has_many :routes end class Route < ApplicationRecord belongs_to :place end 上课地点
class Place < ApplicationRecord
has_many :routes
end
class Route < ApplicationRecord
belongs_to :place
end
上课地点
您的路线需要与两个地方关联——起点和终点
因此,一个选择是:
class Place < ApplicationRecord
has_many :routes_as_start, class_name: "Route", foreign_key: :start_place_id
has_many :routes_as_end, class_name: "Route", foreign_key: :end_place_id
end
class Route < ApplicationRecord
belongs_to :start_place, class_name: "Place"
belongs_to :end_place, class_name: "Place"
end
上课地点
但是,如果您的路线没有起点和终点的正式概念(即它们只是连接两个地点),您可能会受益于中间模型:
class Place < ApplicationRecord
has_many :route_ends,
has_many :routes, through: :ends
end
class RouteEnd
belongs_to :place
belongs_to :route
end
class Route < ApplicationRecord
has_many :route_ends
has_many :places, :through :route_end
end
上课地点
在这种情况下,:has\u many
实际上应该解释为:has\u two
这使您可以更轻松地找到在特定位置终止的所有路线,而不必考虑它们是“起点”或“终点”