У меня есть функция поиска в моем приложении rails, где можно найти поиск по game
или tag
. И игра, и тег has_and_belong_to_many
пользователей.Показать записи, общие для двух активных запросов записи
Я хотел бы искал game
иtag
для отображения только тех пользователей, как с этой игрой и метки.
Возможно, я мог бы отфильтровать результаты в view
, но я думаю, что это все равно вызовет запуск запроса и загрузку сервера?
Поиск модели:
users = User.all
users =
tu = Tag.includes(:users).where(["name like ?", "%#{user_profile_tag}%"])
gu = Game.includes(:users).where(["name like ?", "%#{game}%"])
users = (tu + gu)
return users
end
Я на немного потери относительно того, что делать, я попытался с помощью &
между tu and gu
, но для этого не перечисляет нет пользователей.
Поисковые контроллер:
def new
@search = Search.new
@game = User.includes(:game).where(game: { name: @game })
@user_profile_tag = User.includes(:tag).where(tag: { name: @user_profile_tag })
end
Любые идеи, высоко ценится!
Edit: модель объединения
class User < ActiveRecord::Base
has_and_belongs_to_many :games
has_and_belongs_to_many :tags
class Tag < ActiveRecord::Base
has_and_belongs_to_many :users
class Game < ActiveRecord::Base
has_and_belongs_to_many :users
Используйте 'join' вместо 'includes' или используйте методы 'includes' и 'reference'. Также вы должны опубликовать свои отношения с моделью тоже – arieljuod
@arieljuod спасибо, теперь включили модели – JG3