Имя области поиска электронных писем из поля таблицы
В пользовательской таблице у меня есть поле имени, где некоторые записи являются именами, а некоторые - электронными письмами. Я знаю, плохой подход. Это в сторону. Я хотел бы написать именованную область, которая возвращает только записи электронной почты.
Я попытался адаптировать запрос, который выполняет этот запрос, и не удалось.
MYSQL:
SELECT NAME
FROM USER
WHERE NAME LIKE '%@%.%'
Модель пользователя:
scope :user_email, :conditions => ["name like '%@%.%'"]
Любая помощь будет оценена.
2 ответа
Решение
Попробуй это:
scope :user_email, :conditions => ["name LIKE ?", '%@%.%']
Вы должны предоставить строковые условия в этом формате, чтобы избежать возможных проблем с внедрением SQL.
Попробуй это:
named_scope :user_email, :conditions => ["name REGEXP ?", /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i]