2017-01-13 3 views
0

Мне нужно проверить, существует ли Пользователь.Или варианты с использованием ruby ​​"существует?"

Это работает:

User.exists?(id:123) => true 

Однако идентификатор не будет всегда доступен, только столбец "name_parameterized". Итак, как сделать что-то подобное ?:

User.exists?("name_parameterized='peter-parker' OR id=123") 

Спасибо.

ответ

2

Вы можете сделать это с помощью двух различных запросов, которые зачастую быстрее из-за индексации:

User.exists?(name_parameterized: 'peter-parker') or User.exists?(id: 123) 

Вы также можете свернуть это в один запрос, хотя это может быть более беспорядочным с точки зрения оптимизатора запросов:

User.where(name_parameterized: 'peter-parker').or.where(id: 123).any? 
1
User.where(id: 123).or(User.where(name: 'peter-parker')).exists? 

Update Это работает в рельсах 5. Для более старых версий используют

User.where('id=? OR name=?', 123, 'peter-parker').exists? 
+2

Это работает только на Rails 5 и выше. – Santhosh

+0

Спасибо за указание –

Смежные вопросы