2012-09-03 91 views
2

我一直在關注這些railscastsuser_signed_in?始終返回false

http://railscasts.com/episodes/209-introducing-devise & & http://railscasts.com/episodes/233-engage-with-devise 進行用戶身份驗證,但每當我試試,看用戶是否登錄,響應始終爲false。

我試了一堆東西來嘗試修復這個問題。我嘗試了不同版本的devise和devise_rpx_connectable。我試着改變配置文件中的設置。我試着運行'rails generate devise:install'一堆不同的寶石版本。

奇怪的是,當我圍繞RPXNow.api_key更改某些虛假內容時,我沒有收到錯誤,這是意外的行爲。

這裏是我的application.html.erb文件中的代碼:

<% if user_signed_in? %> 
    Signed in as <%= current_user.email %>. Not you? 
    <%= link_to "Sign out", destroy_user_session_path %> 
<% else %> 
    <%= link_to_rpx "Sign in", user_session_url %> 
<% end %> 
<%= javascript_include_rpx(root_url) %> 

這裏是我的用戶模型user.rb文件中的代碼

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
      :recoverable, :rememberable, :trackable, :validatable, :rpx_connectable 

    attr_accessible :email, :password, :password_confirmation 

    validates :email, :uniqueness => true 
    .....other stuff.... 
end 

這裏是我的Gemfile的一部分:

gem 'rails', '3.2.6' 

gem 'devise','2.0.0' 
gem 'devise_rpx_connectable' 

,這得到devise_rpx_connectable寶石版本0.2.2

這是什麼在我的初始化/ devise.rb文件:

Devise.setup do |config| 
    config.mailer_sender = "[email protected]" 
    config.apply_schema = false 
    require 'devise/orm/active_record' 
    config.case_insensitive_keys = [ :email ] 
    config.strip_whitespace_keys = [ :email ] 
    config.skip_session_storage = [:http_auth] 
    config.stretches = Rails.env.test? ? 1 : 10 
    config.reconfirmable = true 
    config.use_salt_as_remember_token = true 
    config.reset_password_within = 6.hours 
    config.sign_out_via = :delete 
    config.rpx_application_name = "appname" 
    RPXNow.api_key = "<any_key_we_want_apparently>" 
end 

這是我們的routes.rb文件:

AppName::Application.routes.draw do 
    root :to => "pages#home" 
    match 'users/:id' => "users#index" 
    devise_for :users 
end 

股的評論後--editted --- 我做軌道摹遷移add_rpx_to_users rpx_identifier:字符串

跑耙分貝:遷移在此:

class AddRpxToUsers < ActiveRecord::Migration 
    def change 
     add_column :users, :rpx_identifier, :string 
    end 
end 

如果有人有任何想法,請分享。我一直在努力解決這個問題。

非常感謝!

+0

您是否記得將字段添加到rpx_identiifer ....的用戶模型中,然後遷移? – ply

+0

我做到了。任何其他的想法? –

+0

我有相同的user_signed_in?總是返回錯誤的問題。請幫忙! http://stackoverflow.com/questions/20044080/devise-cant-display-sign-in-or-sign-out-in-rails-view –

回答

6

這可能是因爲您可能已經在應用程序控制器中使用current_user方法。因此,該設計不會看到它的current_user方法的實現,因此它總是爲其輔助方法返回false。只需刪除或重命名您正在使用的current_user方法即可解決問題。

+0

我希望我能投票這更多,我有我自己的身份驗證系統和切換到設計和忘記刪除我自己的curren_user助手導致自己約2小時的頭痛:( – trueinViso