我有这个问题:
city.city_combat_units.includes(:combat_unit).where('combat_units.name = ?', 'unit name')
city_combat_unit是属于城市的combat_unit。 combat_unit具有name属性。 city_combat_unit有一个city_id和一个number_of_units属性:
CombatUnit
name
City
CityCombatUnit
city_id
combat_unit_id
number_of_units
我想要做的就是为一个具有特定名称的城市获取所有城市战斗部队。我提出的最好(单行)是上面的代码,但我担心我会在某些方面更加简单。我呢?
答案 0 :(得分:3)
尝试设置has_many :through关系
class City < ActiveRecord::Base
has_many :city_combat_units
has_many :combat_units, :through => :city_combat_units
end
class CityCombatUnit < ActiveRecord::Base
belongs_to :city
belongs_to :combat_unit
end
class CombatUnit < ActiveRecord::Base
has_many :city_combat_units
has_many :cities, :through => :city_combat_units
end
然后你应该可以做这样的事情
city.combat_units.where(:name => 'unit name')