每次登录时,都会收到错误消息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/