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查询