从其他模型引用其他数据

时间:2015-01-26 22:39:54

标签: ruby-on-rails ruby-on-rails-4

我需要有关从其他模型中提取数据以及在Rails中正确引用帮助的帮助。例如,我有一个Rails应用程序,它可以保存竞赛信息。在这里,我有汽车,汽车类,活动和赛车。我有它可以创建一个汽车类的汽车,但我不知道我将如何做事件和赛车部分。我希望这一切都有意义,因为我仍然试图自己包围它。我正在使用Rails版本4.1.6

如果有人能为这个问题提出更好的标题,我将不胜感激。

汽车类: 这是汽车所属的类。所有的汽车都必须在一个班级。这应该包含有关汽车类的所有信息。

型号:

class CarClass < ActiveRecord::Base
  has_many :cars
end

汽车: 正如您在CarClassCar的模型中看到的那样,汽车属于一个班级。这应该包含有关汽车的所有细节。

型号:

class Car < ActiveRecord::Base
      belongs_to :car_class
 end

事件: 一个赛车是赛车比赛的地方。它将保存活动详细信息,但如上所述,班级和汽车详细信息将由CarClassCar保留。应该可以获得该赛事的所有赛车列表。我认为Event会有很多Racing


赛车 这应该包含每辆车的比赛统计数据。例如,他们进入的地点,跟踪时间等。我认为Racing属于Event

1 个答案:

答案 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