Я хочу выполнить поиск по двум таблицам, которые имеют отношение "много к одному", например
class User << ActiveRecord::Base
has_many :pets
end
class Pet << ActiveRecord::Base
belongs_to :users
end
Теперь скажем, что у меня есть такие данные, как
users
id name
1 Bob
2 Joe
3 Brian
pets
id user_id animal
1 1 cat
2 1 dog
3 2 cat
4 3 dog
Что я хочу сделать, так это создать активный запрос записи, который вернет пользователя с кошкой и собакой (то есть пользователь 1 - Боб).
Моя попытка сделать это пока
User.joins(:pets).where('pets.animal = ? AND pets.animal = ?','dog','cat')
Теперь я понимаю, почему это не работает - он ищет питомца, которое является и собакой, и кошкой, так что ничего не возвращает. Я не знаю, как изменить это, чтобы дать мне ответ, который я хочу, однако. У кого-нибудь есть предложения? Кажется, это должно быть легко - это не выглядит особенно необычной ситуацией.
--- редактировать ---
Просто добавив немного кода к этому вопросу, поскольку я только что открыл Squeel. Это позволяет создать такой подзапрос,
User.where{id.in(Pet.where{animal == 'Cat'}.select{user_id} & id.in(Pet.where{animal == 'Dog'}.select{user_id}))
Это то, что найдет свой путь в моем приложении.