Имя области поиска электронных писем из поля таблицы

В пользовательской таблице у меня есть поле имени, где некоторые записи являются именами, а некоторые - электронными письмами. Я знаю, плохой подход. Это в сторону. Я хотел бы написать именованную область, которая возвращает только записи электронной почты.

Я попытался адаптировать запрос, который выполняет этот запрос, и не удалось.

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]
Другие вопросы по тегам