2012-03-18 8 views
2

に会合を介して下さい、私はこのクエリを持っている:より良い方法

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 

私は何をしたいのか、特定の名前を持つこの都市のすべての都市のものの戦闘ユニットを取得しています。最高の私は(1行で)上記のコードですが、私は何か簡単な方法で行方不明であることを恐れています。私ですか?

答えて

3

は、その後、あなたがこの

city.combat_units.where(:name => 'unit name') 
+0

yeapような何かを行うことができるはず、私はすでに関連を持っているが、時々私はちょうどに忘れているようだ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 

を設定してみてください思うよ。 Thanx;) – Spyros

関連する問題