Поэтому у меня есть приложение, над которым я работаю с двумя моделями. Пользователи могут создавать объекты с определенными чертами
Я не хочу, чтобы пользователь мог находить свои собственные объекты.
Как ограничить запрос?
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 != ?
Для 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?
У вас проблема в синтаксисе:
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
Может быть, это решит вашу проблему
def self.search(search, current_user_id)
where(['primarybreed LIKE and user_id != ?', "%#{search}%",current_user_id])
end