我正在做的一个应用,允许用户注册时填写用户名和电子邮件,并且登录时可以任选一个。因为以前没做个这样的事情,所以我自己想了一下这样来实现了:
登陆表单给一个 input
,用户填写用户名和电子邮件都可以(二选一)
取值以后使用以下方法取得用户:
# identifier 是从表单里获得的值
def self.find_by_identifier(identifier)
where('username = ? OR usermail = ?', identifier, identifier).first
end
目前这么做可以,但是我发现这样取出来的用户不是一个 object,而是一个 array,获得的 user object 在这个 array 当中,得再用 first 把它取出来。我想这是因为我的查询条件里是 OR
的缘故吧?
我仔细考虑了一下,应该不会出现查询错误(新手程序员,缺乏经验),但是我不知道这样做是否是最好的方式,总觉得返回一个数组(尽管只有一项在数组里)怪怪的……大家觉得呢?有什么更好的方式教一下我呢?