2011-07-27 11 views
0

とDB認証私は(https://github.com/ehsanul/Sinatra-Authlogic-Template以下)Authlogicと統合しています小さなシナトラアプリケーションを書いていますがシナトラ:セッション

すべては私がログインしようとしたときを除いて動作します。次のエラーが表示されます。

NameError at /login 
undefined local variable or method `active' for #<User:0x000001040208f0> 

私はauthlogic gemをベンダーとして含めています。私のSinatraアプリはGithubのアプリとまったく同じではありません。

すべてのお問い合わせは大変ありがとうございます。ありがとう!

答えて

1

問題が見つかりました。

はここでGithubのページによるモデルです:

class User < ActiveRecord::Base 
    acts_as_authentic do |c| 
    # Bcrypt is recommended 
    #crypto_provider = Authlogic::CryptoProviders::BCrypt 
    c.perishable_token_valid_for(24*60*60) 
    c.validates_length_of_password_field_options = 
    {:on => :update, :minimum => 6, :if => :has_no_credentials?} 
    c.validates_length_of_password_confirmation_field_options = 
    {:on => :update, :minimum => 6, :if => :has_no_credentials?} 
    end 

    def active? 
    active 
    end 

    def has_no_credentials? 
    crypted_password.blank? #&& self.openid_identifier.blank? 
    end 

    def send_activation_email 
    Pony.mail(
     :to => self.email, 
     :from => "[email protected]", 
     :subject => "Activate your account", 
     :body => "You can activate your account at this link: " + 
       "http://domain.tld/activate/#{self.perishable_token}" 
    ) 
    end 

    def send_password_reset_email 
    Pony.mail(
     :to => self.email, 
     :from => "[email protected]", 
     :subject => "Reset your password", 
     :body => "We have recieved a request to reset your password. " + 
       "If you did not send this request, then please ignore this email.\n\n" + 
       "If you did send the request, you may reset your password using the following link: " + 
       "http://domain.tld/reset-password/#{self.perishable_token}" 
    ) 
    end 
end 

私は郵便法のすべてを削除しますが、それは、ユーザーテーブルの活性カラムを探していたので、私のスクリプトはactive?方法に失敗しました。私は(これは他のシステムとのデータの整合性に)テーブルにこの列を追加することができませんので、私は単にこれが誰かを助け

マイUser.rb

class UserSession < Authlogic::Session::Base 
end 

class User < ActiveRecord::Base 
    acts_as_authentic do |c| 

    end 

    def active? 
    return true 
    end 
end 

希望return trueに私の方法を語りました!

関連する問題