Ruby on rails rails modelA有许多modelB,modelB habtm modelC,如何显示与单个modelC关联的modelA?

Ruby on rails rails modelA有许多modelB,modelB habtm modelC,如何显示与单个modelC关联的modelA?,ruby-on-rails,ruby-on-rails-3,has-many-through,has-and-belongs-to-many,Ruby On Rails,Ruby On Rails 3,Has Many Through,Has And Belongs To Many,这不一定是一个有很多通过,但有点可能 假设modelA=汽车制造 假设modelB=Models 假设modelC=Features 所以我从以下几点开始: class CarMake < ActiveRecord::Base has_many :models end class Model < ActiveRecord::Base belongs_to :car_make has_and_belongs_to_many :features end class F

这不一定是一个有很多通过,但有点可能

  • 假设modelA=汽车制造
  • 假设modelB=Models
  • 假设modelC=Features
所以我从以下几点开始:

class CarMake < ActiveRecord::Base
  has_many :models
end

class Model < ActiveRecord::Base
  belongs_to :car_make
  has_and_belongs_to_many :features
end

class Feature < ActiveRecord::Base
  has_and_belongs_to_many :models
end  
class-CarMake
我有正确的联接表,我有正确工作的所有CARMAKE和模型的RESTful方法,我可以向模型添加功能,它可以正确保存

我想做的是显示一个特性(具有名称、成本等属性)并列出所有具有该特性的CarMakes,无论它属于什么型号,我不想列出型号,只列出CarMakes,可能吗


CarMake与模特有一对多的关系。模型和功能具有多对多关系,但该关系不需要属性或回调。间接地说,CarMake与功能有多对多的关系,所以也许我应该这样做,因为CarMake通过模型拥有许多功能

您仍然需要查看每个车型的特定功能,才能获得汽车品牌列表。这可能会导致重复的列表,因此
.uniq
会再次过滤掉这些列表:

feature.models.map(&:car_make).uniq
如果您按照您的建议(使用
uniq:true
)声明
具有多个:通过
关联,您只需执行以下操作:

feature.car_makes
ActiveRecord将生成一个适当的SQL查询