1

我正在实施 Omniauth-Identity,我已经看到 Ryan Bates 的 Railcast 正在这样做。当他浏览登录视图时,他不经意地提到登录字段默认为电子邮件,但可以自定义。当我尝试使用存储在“登录”列下的身份表中的用户名登录时,我只收到一个 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(login) 并且它会查询我数据库中的正确列。我的问题是在哪里。我尝试在我的模型中覆盖该方法,用“登录”替换“电子邮件”,但它没有做任何事情。

我像 Ryan Bates 一样从我的会话/新视图中调用 /auth/identity/callback。非常感谢,如果很明显很抱歉,但我在互联网上能找到的似乎都是 Railscasts 教程的反刍。

4

1 回答 1

0

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

 auth_key("login")

在我的 identity.rb 中,但我想我没有在我发布问题后立即这样做。无论哪种方式,我希望它可以帮助其他人。

于 2012-07-16T22:16:49.010 回答