プレーヤーの検索を行うために使用したい次のモデルの関連付けがあります。
class Player < ActiveRecord::Base
belongs_to :user
has_many :abilities
has_many :sports, :through => :abilities
...
end
class User < ActiveRecord::Base
has_one :player
...
end
class Ability < ActiveRecord::Base
belongs_to :player
belongs_to :sport
has_one :level
...
end
class Sport < ActiveRecord::Base
has_and_belongs_to_many :category_sports
has_many :abilities
has_many :players, :through => :abilities
...
end
class CategorySport < ActiveRecord::Base
has_and_belongs_to_many :sports
end
ユーザーが都市とスポーツの2つの入力を入力できるフォームがあります
都市フィールドは ( ) として User モデルに@user.city
あり、スポーツ フィールドは ( ) として CategorySport として、@category_sport.name
または ( ) として Sport モデルのいずれかにあります@sport.name
。
現在、Playerモデルで検索を実行するために次のものがあります。
def search
self.find(:all,:include => 'user',:conditions => ['users.city LIKE ?', "%#{city}%"])
end
スポーツでも検索するには、結合モデル (能力) と関連 (スポーツ、カテゴリスポーツ) をこのクエリに追加する方法を知りたいです。そのため、ユーザーの都市だけでなく、スポーツ別に検索することもできます。