如何将omniauth identity的auth_key从“email”覆盖到其他东西?

时间:2012-07-16 21:51:15

标签: ruby-on-rails omniauth identity

我正在实施Omniauth-Identity,我已经看过Ryan Bates的铁路广播。当他正在浏览登录视图时,他非常谨慎地提到登录字段默认为电子邮件,但可以自定义。当我尝试使用存储在我的身份表中“登录”列下的用户名登录时,我只得到一个MySql错误

 Unknown column 'identities.email

这是预期的,因为如上所述,Identity默认为此auth_key。在gem的源代码中有这个定义

 def auth_key(method = false)
      @auth_key = method.to_s unless method == false
      @auth_key = nil if @auth_key == ''

      @auth_key || 'email'
    end

所以我假设某个地方我应该能够调用auth_key(登录)并且它会查询我的数据库中的右列。我的问题是在哪里。我尝试覆盖我的模型中的方法,将'email'替换为'login',但它没有做任何事情。

我正在调用我的会话/新视图中的/ auth / identity / callback,就像Ryan Bates一样。非常感谢和抱歉,如果它是显而易见的,但似乎我在互联网上找到的只是Railscasts教程的反刍。

1 个答案:

答案 0 :(得分:0)

最初我试图通过重新定义auth_key来覆盖gem代码......我很肯定我曾尝试过写作

 auth_key("login")

在我的identity.rb中,但我想我在发布问题后就没那么做了。无论哪种方式,我希望它能帮助其他人。