RoR设计:sign_in始终返回无效的电子邮件/密码

每次登录时,都会收到错误信息,表明电子邮件/密码无效。

路线:

devise_for :users devise_scope :users do get '/users/sign_out' => 'devise/sessions#destroy', :as => :destroy_user_session post '/users/sign_in' => 'devise/sessions#create', :as => :user_session end resources :users 

用户模型:

 devise :database_authenticatable, :confirmable, :recoverable, :rememberable, :trackable attr_accessor :password attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :gender, :remember_me 

视图:

  Hi . | Not you?  :delete %>   or  :create %>  

我尝试将路线更改为:

 get '/users/sign_in' => 'devise/sessions#new', :as => :new_user_session 

并改变各自的路径,但这并没有改变任何东西。

我甚至改变了视图中的代码:

 if signed_in?(:user) 

至:

 if user_signed_in? 

并做了这些事情的组合,没有任何工作。

我确实要求设计处理确认,我通过将生成的链接复制到浏览器并将其作为用户第一次签名来完成。 它还允许我通过电子邮件确认链接更改密码,该链接也会在更改密码时签署。 但是一旦我退出并重新登录,它就会告诉我电子邮件/密码再次无效。

有人可以帮忙吗?

我正在使用rails 3.0.7,设计1.4.5,capybara 1.1.1,黄瓜1.0.6,mysql2 0.2.6和rake 0.8.7,如果这有助于任何人。

谢谢

编辑:

为了帮助未来的用户,gem实际上没有任何问题。 它工作正常。 问题出在我的数据库中。 出于某种原因,它正在从数据库中选择一个NULL电子邮件,而不是拉动我尝试登录的用户的信息。我正在弄清楚如何解决这个问题,并且一旦我搞清楚就会更新。

我在Devise的全新安装上遇到了类似的问题,但我发现如果我运行bundle update那么重新启动我的dev服务器就行了。

起初我没有在development.log看到数据库查询,但是一旦我更新了我的Gemfile (以确保我使用最新的Devise gem)并重新启动服务器,我现在在我的日志文件中看到db查询它的工作原理(神奇)。

希望有所帮助。

顺便说一下,不确定这对你有帮助……但这些是我的Routes.rb中的路线

  devise_for :users, :path_names => { :sign_up => "register", :sign_in => "login", :sign_out => "logout", :settings => "settings" } devise_scope :user do get "login", :to => "devise/sessions#new" get "register", :to => "devise/registrations#new" get "settings", :to => "devise/registrations#edit" get "logout", :to => "devise/sessions#destroy" end 

当我有两个时,我遇到了这个问题

 config.authentication_keys = [ :username ] 

 config.authentication_keys = [ :email ] 

在config / initializers / devise.rb中同时启用。

删除重复设置后,身份validation成功。

当我遇到这个问题时,我通过我的Devise配置文件返回

配置/初始化/ devise.rb

然后我找到了我记得我已改为的部分:用户名

 config.authentication_keys = [ :username ] 

我把它改回来了:email 。 最终使它成功。

我认为attr_accessorattr_accessible混淆了 。 你真的需要一个attr_accessor吗?如果不是简单的删除它。

试试吧,请告诉我它是怎么回事。

最好的祝福

ED

用户名和密码都可以区分大小写。 您是否已检查用户名如何存储在表中以确保正确输入?

根据我的经验,当它告诉您电子邮件/密码不正确时,您可能会分心注意许多复杂的想法,但最终导致电子邮件或密码不正确。 听起来你已经尝试过多次重置密码,所以这让我对用户名感到疑惑。 你确定在设计中设置了正确的字段作为用户名(即它可能是电子邮件还是用户名)?

config.authentication_keys = [:用户名]

config.authentication_keys = [:email]

同时在config / initializers / devise.rb中设置将导致此错误。