0

在用户表中,我有一个名称字段,其中一些记录是名称,一些是电子邮件。我知道,不好的方法。那一边。我想编写一个仅返回电子邮件记录的命名范围。

我尝试调整执行此查询的查询,但失败了。

MYSQL:

SELECT NAME
FROM USER
WHERE NAME LIKE '%@%.%'

用户型号:

scope :user_email, :conditions => ["name like '%@%.%'"]

任何帮助,将不胜感激。

4

2 回答 2

1

尝试这个:

scope :user_email, :conditions => ["name LIKE ?", '%@%.%']

您应该以这种格式提供字符串条件以避免可能的 sql 注入问题。

于 2013-01-18T02:30:16.293 回答
0

尝试这个:

 named_scope :user_email, :conditions => ["name REGEXP ?", /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i]
于 2013-01-18T02:40:03.980 回答