2012-03-25 7 views
0

私はまだRubyとRoRの学習段階ですが、私はすでに問題に遭遇しました。 フィールド「名前」と「パスワード」を持つユーザと呼ばれる足場を作成しました。 その後、「ピン」や「塩」などのフィールドも追加しました。ダイナミックメソッドはアプリ内で動作しませんか?

User.find_by_nameとfind_by_passwordは何らかの理由で完全に正常に動作しますが、find_by_pinは機能していません。私は少しグーグルを試みたが、何も見つかりませんでした。

ルビーコンソール(レールコンソール)でも同じ方法を試しましたが、何らかの理由でそれが完全にうまく動作しています。予想通りに正しいデータを返します。

EDIT 1:

誰かがコメントで述べたように、のは、私はこのコードを使用していましょう:(はい、クッキー[:ピン]が設定されている)

def get_user 
    user = User.find_by_pin(cookies[:pin]) 
    if user.pin == cookies[:pin] 
     'yes' 
    end 
end 

以降Iそれがこれを返す

<%= get_user %> 

これを行います3210

EDIT 2:

私はこの試みた:

def get_user 

    user = User.find_by_name('Crembo') 
    user.pin # returns 753e345a113471a6775e242f444704fe 

    user = User.find_by_pin(user.pin) 
    if user.nil? 
     'is nil' 
    else 
     'exists' 
    end 
end 

をし、それがnilである 'を返します。それはどういう意味ですか?

def pin_check 
    user = User.find_by_name('Crembo') 

    if user.pin == cookies[:pin] 
     'true' 
    else 
     'false' 
    end 
end 

trueを返し、それを拡張します。

EDIT 3:

コメントで尋ねたように、私のUserモデル:

class User < ActiveRecord::Base 
    has_many :posts 

    validates_uniqueness_of :name 

    def password_matches?(password_to_match) 
     self.password == Digest::SHA512.hexdigest(password_to_match) 
    end 
end 
+0

'rake db:migrate'がお手伝いします。 – fl00r

+0

'find_by_pin'を使用しようとするとどうなりますか?あなたは彼らが「うまくいかない」方法を詳しく説明する必要があります。 – James

+0

これまでに10回くらい行ったことがありますが、まだ何もありません。 Jamesが望んでいたような説明を追加しました。 – Crembo

答えて

0

[OK]を、明らかに問題がSQLiteのでした。なんらかの理由で、正しく動作しないと判断しました。 私はMySQLに切り替えましたが、今はすべて正常に動作します。

関連する問題