Rails 使用 devise,如何设置用非 email 属性或者多属性都可注册。(目前默认为 email 注册)

realwol · 2013年12月31日 · 最后由 realwol 回复于 2014年01月06日 · 4597 次阅读

devise 配置方面,可以完成手机号码和邮箱登录。

config.authentication_keys = [ :login ]

reg 的 new 文件设置这样时候可以完成邮箱注册。

= f.text_field :email, :placeholder => "您的邮箱", :autofocus => true

问题是: 如果设置为这样时候,可以创建新用户,但是手机号码不会存入 phone 中。

= f.text_field :phone, :placeholder => "您的邮箱", :autofocus => true

#1 楼 @chunlea 这样是不是有点稍微复杂了,我还需要写整个注册流程。我只是想将 email 替换为 phone,我觉得应该有更简洁的方法来做这个吧。我目前可以实现注册不用 email,就是 phone 存不到 db 里。或者如果可以知道 devise controller 的具体实现,插入个 update 就可以吧。

#2 楼 @realwol 不需要整个重写,可以使用继承

#3 楼 @chunlea 我之前试过,要是 super 后边接 update 的话,也不会更新到 db,这点我也不理解。不知道有没有其他好点办法。

config.authentication_keys = [ :username ] 然后不论手机号码还是邮箱都归入 username 呢

#5 楼 @lalameat 归入具体是怎么设置呢?

#7 楼 @chunlea 这个我自然是注意到了。我昨天问题本来可以用 hack 方式解决,不过想问问有没有更优雅的方法:修改 id 之后,自动存入对应属性。

@realwol 归入还用设置么。username 不是可以为任意么,手机号,邮箱都是合法的 username 吧,至少可以让 username 可以接受他们。

可能是因为 Strong Parameters 你的 phone 被过滤掉了 我之前在里面加 name 字段就曾被过滤过

参考下 @chunlea 的做法吧

#9 楼 @lalameat 其实还是没明白你说的什么,不过同样感谢。

#10 楼 @wuwx SP 我设置过了,后来他一直就是只会存储 email,因为赶时间我也就没有详细去试验,用 hack 做过了功能。你现在的设置可以解决我这问题吗?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号