2011-10-16 36 views

回答

-1

,爲什麼你會包括has_secure_password如果你想要一個空密碼或者你爲什麼要實施密碼的,如果你接受空的。無論如何,你總是可以實現你自己的摘要方法,而不使用使用BCrypt的has_secure_password,從頭開始有一個Railscast#250身份驗證,你可以看到這在行動

+0

是的,這是使用正是這樣,這就是爲什麼我問上面的問題......在我的系統有需要的用戶名不僱員(因此密碼字段)和員工。 – jaycode

+0

然後使沒有身份驗證的用戶模型和員工認爲requie authenticarion帳戶模式 – jtomasrl

0

我不認爲has_secure_password會做你想做的,正如你發現的。

因此,不用使用has_secure_password,你可以編寫你自己的,基本上覆制源代碼和'fork'來做你想做的事情 - 只有在#user不是零的情況下才會生成並驗證密碼,這聽起來像你要。

或者,正如jtomasri所建議的那樣,您可以創建一個Employee模型和一個User模型 - 您可以使用ActiveRecord的「單表繼承」功能讓它們仍處於同一個表中,類仍然可以獲取在(比方說,Account.find返回員工和用戶符合您的條件)。在某些方面,這是「清潔」的解決方案,儘管它增加的幕後ActiveRecord的東西複雜性 - 在過去的單表繼承是有點馬車,我認爲他們表現很好,這些天。 (有一段時間我沒有用過它)。

0

我只是有一個相關的問題和所使用的:如果運營商的驗證。

validates :password ,..., :if => :employee_needs_password? 
validates :password_confirmation , ... , :if => :employee_needs_password? 

def employee_needs_password? 
    # check whatever your condition is and return true/false 
end