我需要有关从其他模型中提取数据以及在Rails中正确引用帮助的帮助。例如,我有一个Rails应用程序,它可以保存竞赛信息。在这里,我有汽车,汽车类,活动和赛车。我有它可以创建一个汽车类的汽车,但我不知道我将如何做事件和赛车部分。我希望这一切都有意义,因为我仍然试图自己包围它。我正在使用Rails版本4.1.6
。
如果有人能为这个问题提出更好的标题,我将不胜感激。
汽车类: 这是汽车所属的类。所有的汽车都必须在一个班级。这应该包含有关汽车类的所有信息。
型号:
class CarClass < ActiveRecord::Base
has_many :cars
end
汽车:
正如您在CarClass
和Car
的模型中看到的那样,汽车属于一个班级。这应该包含有关汽车的所有细节。
型号:
class Car < ActiveRecord::Base
belongs_to :car_class
end
事件:
一个赛车是赛车比赛的地方。它将保存活动详细信息,但如上所述,班级和汽车详细信息将由CarClass
和Car
保留。应该可以获得该赛事的所有赛车列表。我认为Event
会有很多Racing
。
赛车
这应该包含每辆车的比赛统计数据。例如,他们进入的地点,跟踪时间等。我认为Racing
属于Event
。
答案 0 :(得分:0)
这是一个非常经典的has_many through:
情况。这是两个模型之间的多对多关系,中间模型充当连接表。在此处为连接表使用单独的模型将允许您存储其他数据以进行更改,而不仅仅是车辆和事件之间的连接。
您可以执行以下操作:
class Racing < AR::Base
belongs_to :car
belongs_to :event
end
class Event < AR::Base
has_many :racings
has_many :cars, through: :racings
end
class Car < AR::Base
has_many :racings
has_many :events, through: :racings
belongs_to :car_class
end
class CarClass < AR::Base
has_many :cars
end
您可以阅读有关Rails的关联in the guides的更多信息。
这将允许您从汽车访问事件,反之亦然。这样你就可以从活动中获得汽车课程。例如第一个事件的第一辆车的类:
Event.first.cars.first.car_class
当您循环关联时,请不要忘记在适当的地方使用includes
。