Исключить пользовательские объекты из поиска

0

Поэтому у меня есть приложение, над которым я работаю с двумя моделями. Пользователи могут создавать объекты с определенными чертами

Я не хочу, чтобы пользователь мог находить свои собственные объекты.

Как ограничить запрос?

def self.search(search)
where(['primarybreed LIKE ?', "%#{search}%"]).where(:user_id != current_user.id)
end

текущий пользователь нарушает вышеуказанный код. Включение сеанса помощник также нарушает код.

edit: контроллер

      @dog = Dog.search(params[:search],current_user.id).sample if params[:search].present?

запрос:

 def self.search(search, current_user_id)
   where(['primarybreed LIKE and user_id != ?', "%#{search}%", current_user_id])
 end

получить следующую ошибку

wrong number of bind variables (2 for 1) in: primarybreed LIKE and user_id != ?

3 ответа

1
Лучший ответ

Для Rails 4.x используйте это:

 def self.search(search, current_user_id)
   where(['primarybreed LIKE ?', "%#{search}%").where.not(user_id: current_user_id])
 end

и вы можете назвать это как:

@dog = Dog.search(params[:search],current_user.id).sample if params[:search].present?
  • 0
    @ Peege151 Ты попробовал мой ответ? Его 7 часов следующего дня :)
0

У вас проблема в синтаксисе:

def self.search(search, current_user_id)
  where(['primarybreed LIKE and user_id != ?', "%#{search}%", current_user_id])
end

Вы передаете 2 параметра, но запрос имеет 1. Отсутствует "?". Добавить "?" после LIKE, а затем снова проверьте.

def self.search(search, current_user_id)
  where(['primarybreed LIKE ? and user_id != ?', "%#{search}%", current_user_id])
end
0

Может быть, это решит вашу проблему

def self.search(search, current_user_id)
where(['primarybreed LIKE and user_id != ?', "%#{search}%",current_user_id])
end
  • 0
    Привет, спасибо - но current_user на этой модели ноль
  • 0
    Где вы определили метод, который помещает текущую информацию пользователя в current_user.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню