在Rails教程的第8章中,定義了四種方法。一個被稱爲記住(列表8.32)沒有參數,另一個被稱爲記住(用戶)(列表8.35)。然後有一個方法叫做忘記(列表8.38),沒有參數,還有一個忘記(用戶)方法(列表8.39)。Rails教程:重複的方法名稱,記住並記住(用戶),忘記和忘記(用戶)
我理解認證機制背後的邏輯,我沒有得到的是爲什麼這些方法對之間沒有衝突或相互衝突,具有相同的名稱,也就是說。
是因爲一種方法沒有參數傳遞給它,另一個需要一個?這是Rails如何區分它們嗎?或者是其他事情正在進行,以便Rails知道調用哪種方法。
在此先感謝您的幫助。
更新:由於在評論一個建議,我會在這裏重現代碼:
在文件user.rb這是用戶模型中,有以下方法:
def remember
self.remember_token = User.new_token
update_attribute(:remember_digest, User.digest(remember_token))
end
...
def forget
update_attribute(:remember_digest, nil)
end
...
和文件中sessions_helper.rb,這是在爲會話模式的助手居住,筆者定義了這兩種方法:
def remember(user)
user.remember
cookies.permanent.signed[:user_id] = user.id
cookies.permanent[:remember_token] = user.remember_token
end
def forget(user)
user.forget
cookies.delete(:user_id)
cookies.delete(:remember_token)
end
讓我煩惱的是,即使有兩個名稱相同的方法(即使一個不接受參數,另一個接受一個,用戶),代碼也能正常工作。
我必須補充說session_helper.rb包含在Application Helper文件中,所以它們是通用的。
你可以發佈一些令你煩惱的代碼,以便我們看看究竟發生了什麼嗎? – Surya 2014-10-29 18:54:53
感謝您的建議。我編輯了問題以包含代碼。 – CesLop 2014-10-29 20:40:41