从其他模型引用其他数据

Referencing Other Data from Other Models

我需要有关从其他模型中提取数据的帮助以及 Rails 中的适当参考帮助。例如,我有一个 Rails 应用程序,其中包含比赛信息。在这里,我有汽车、汽车 Class、活动和赛车。我拥有它可以创建属于汽车 Class 的汽车的地方,但是我不知道如何进行活动和赛车部分。我希望这一切都有意义,因为我仍在努力自己思考。我正在使用 Rails 版本 4.1.6

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

汽车Class: 这是汽车所属的class。所有汽车都必须在 class 内。这应该包含有关汽车的所有信息 class.

型号:

class CarClass < ActiveRecord::Base
  has_many :cars
end

汽车: 正如您在 CarClassCar 的模型中看到的那样,汽车属于 class。这应该包含有关汽车的所有详细信息。

型号:

class Car < ActiveRecord::Base
      belongs_to :car_class
 end

事件: 赛事是汽车 class 比赛的地方。它将保存事件详细信息,但是 class 和汽车详细信息将由 CarClassCar 保存,如上所述。应该有可能获得该事件的所有汽车的列表。我假设 Event 会有很多 Racing.


赛车 这应该包含每辆车的比赛统计数据。例如他们进来的地方,跟踪时间等。我假设 Racing 将属于 Event

这是一个漂亮的 classic has_many through: 情况。这是两个模型之间的多对多关系,中间模型充当连接 table。在此处为连接使用单独的模型 table 将允许您存储额外的赛车数据,而不仅仅是汽车和赛事之间的连接。

您可以执行以下操作:

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

这将允许您从汽车访问事件,反之亦然。同样,您可以通过这种方式从活动中到达汽车 classes。例如第一个项目的第一辆车的class:

Event.first.cars.first.car_class

当您遍历关联时,请不要忘记在适当的地方使用 includes