ruby-on-rails - RoR装置:sign_in始终返回无效的电子邮件/密码

标签 ruby-on-rails ruby-on-rails-3 devise

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

路线:

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

View :
<% if signed_in?(:user) %>
   Hi <%= current_user.first_name %>. | Not you? <%= link_to 'Sign out', destroy_user_session_path, :method => :delete %>
<% else %>
   <%= link_to 'Sign up', signup_path %> or <%= link_to 'Sign in', user_session_path, :method => :create %>
<% end %>

我尝试将路线更改为:
get '/users/sign_in' => 'devise/sessions#new', :as => :new_user_session

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

我什至从以下位置更改了 View 中的代码:
if signed_in?(:user)

至:
if user_signed_in?

并做了所有这些事情的组合,却无济于事。

我确实要求devise也处理确认,这是通过将生成的链接复制到浏览器来完成的,它使我第一次以用户身份登录。它还允许我通过电子邮件确认链接来更改密码,这也使我在更改密码时登录。但是,一旦我注销并重新登录,它会告诉我电子邮件/密码再次无效。

有人可以帮忙吗?

我正在使用Rails 3.0.7,设计1.4.5, capybara 1.1.1, cucumber 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

关于ruby-on-rails - RoR装置:sign_in始终返回无效的电子邮件/密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7457704/

相关文章:

mysql - 使用相同数据库/共享表的 Rails 多极站点?

ruby-on-rails - 捆绑更新时,Bundler 找不到 gem "railties"的兼容版本

ruby-on-rails - 您如何添加验证以进行设计?

ruby-on-rails - 我应该使用什么样的数据模型来存储历史数据?

ruby-on-rails - Ruby - 具有不同参数的重试函数

ruby-on-rails - 在 Rails 中分配和重用变量 - 设计模式

ruby-on-rails - 为什么我在 bundle exec 中执行环境后 rake 中止

java - 分段上传不适用于 android + rails

ruby-on-rails-3 - 如何在 Rails 中用 div 包装 date_select 的每个选择?

ruby-on-rails - 如何对 options_for_select 哈希进行排序?