2011-05-13 38 views
1

我無法驗證Transaction_Id這是我的交易表的主鍵,而我可以用email來完成。什麼似乎是問題?幫幫我。謝謝。如何驗證主鍵?

這裏是我的模型/交易:

def self.authenticate(email, transaction_id) 
    user = Transaction.find_by_email(email) 
    if user && user.Transaction_Id 
     return user 
    else 
     return false 
    end 
end 

這裏是我的控制器/修改:

def attempt_login 
    user = Transaction.authenticate(params[:email], params[:Transaction_Id]) 
    if user 
     session[:user_id] = user.id 
     session[:email] = user.email 
     flash[:notice] = "You are now logged in!" 
     redirect_to :action => "modify" 
    else 
     flash[:notice] = "Invalid username/password combination." 
     redirect_to :action => "login" 
    end 
    end 

這是我的看法/登錄:

<div class="login"> 
    <%= form_tag :action => "attempt_login" do %> 

     <%= label_tag :email, "Email Address:" %> 
     <%= text_field_tag :email %> 
     <%= label_tag :Transaction_Id, "Transaction Id:" %> 
     <%= text_field_tag :Transaction_Id %> 

     <%= submit_tag "Log In"%> 
    <% end %> 
</div> 
+0

首先,你的意思是通過認證的主鍵?你的意思是驗證它嗎?其次,問題是什麼?是否發生錯誤?如果是這樣,發佈日誌輸出。什麼是不正確的工作? – Behrang 2011-05-13 13:17:39

+0

沒有錯誤。但我無法驗證Transaction_Id。如果我輸入正確的電子郵件和錯誤的transaction_id,它可以訪問.. – Crisgine 2011-05-13 13:31:41

回答

1

你只檢查是否存在您找到的用戶對象中存在一個transaction_id,但您不會將此ID與給定的ID進行比較,因此請嘗試:

def self.authenticate(email, transaction_id) 
    user = Transaction.find_by_email(email) 
    if user && user.Transaction_Id == transaction_id 
     return user 
    else 
     return false 
    end 
end 

或(不知道它的工作原理)

def self.authenticate(email, transaction_id) 
    user = Transaction.find_by_email_and_transaction_id(email, transaction_id) 
    if user 
     return user 
    else 
     return false 
    end 
end 
總之

# will return user if found; else nil 
def self.authenticate(email, transaction_id) 
    Transaction.find_by_email_and_transaction_id(email, transaction_id) 
end 
+0

它的工作!非常感謝!! :) – Crisgine 2011-05-13 14:41:31

+0

從那以後你有什麼變化?你有沒有測試,以確保沒有其他副作用影響? – arnep 2011-05-20 15:00:51

+0

我忘了把'.to_d'放在我的模型上。對不起。我的錯。順便說一句,謝謝! :) – Crisgine 2011-05-20 15:52:46