У меня есть следующие ассоциации моделей, которые я хочу использовать для поиска игроков:
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
У меня есть форма, в которой пользователь может заполнить два поля: город и спорт.
Поле города находится в модели пользователя как (@user.city
), а поле спорта может быть либо в модели CategorySport как (@category_sport.name
), либо в модели Sport как (@sport.name
).
Прямо сейчас у меня есть следующее для выполнения поиска в модели Player:
def search
self.find(:all,:include => 'user',:conditions => ['users.city LIKE ?', "%#{city}%"])
end
Я хотел бы знать, как бы я добавил модель соединения (способность) и связанную с ней (спорт, категории, спорт) в этом запросе, чтобы найти и по спорту. Так что не только по городу пользователя, но и по виду спорта.
users
нет совпадений? Это странно. Могу ли я увидеть сгенерированный SQL? 13.07.2012