2012-03-25 46 views
0

我仍然處於Ruby和RoR的學習階段,但我已經遇到了一個問題。 我已經創建了一個名爲「name」和「password」字段的腳手架。 稍後,我還添加了更多字段,例如「pin」和「salt」。動態方法不能在應用程序中工作?

現在,雖然User.find_by_name和find_by_password工作得很好,但出於某種原因,find_by_pin似乎不起作用。我嘗試了谷歌搜索,但沒有發現任何東西。

我也在ruby控制檯(rails控制檯)中試過同樣的方法,出於某種原因,它在那裏工作得非常好 - 它會像預期的那樣返回正確的數據。

任何想法?

編輯1:

正如有人在評論中指出,假設我正在使用此代碼:(是的,餅乾[:密碼]設置)

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

後來我做到這一點:

<%= get_user %> 

它返回:

undefined method `pin' for nil:NilClass 

編輯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 

,並返回 '是零'。這有什麼意義?

要延長,

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

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

返回true。

編輯3:

由於要求在評論,我的用戶模型:

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' should help you。 – fl00r 2012-03-25 20:53:25

+0

當您嘗試使用'find_by_pin'時究竟發生了什麼?你需要詳細說明他們「似乎不工作」。 – James 2012-03-25 20:56:13

+0

到目前爲止,這樣做了10次左右,仍然沒有。按照James的意願添加了解釋。 – Crembo 2012-03-25 20:57:19

回答

0

好了,顯然這個問題是SQLite的。出於某種原因,它決定它不能正常工作。 我切換到MySQL,現在一切正常。

相關問題