簡體   English   中英

帶有軌道4.0.1的未定義方法“摘要”

[英]undefined method `digest' with rails 4.0.1

我正在Agile Web Development With Rails 4進行Agile Web Development With Rails 4並且已經達到創建用戶的地步。 它是這樣完成的:

rails generate scaffold User name:string password:digest

但是,當我嘗試運行rake db:migrate ,出現以下錯誤: undefined method digest'

是什么原因造成的,我該如何解決? 我在Google上搜索到digestrails 4功能,那怎么會成為問題呢?

編輯:

以下信息並不完全正確。 似乎該生成器功能的文檔記錄不充分,但確實存在。 在生成器中使用password:digest可以在遷移中簡單創建一個字符串列::password_digest,並將has_secure_password添加到模型中。 可以在這里找到有關此功能的教程。


Rails 4遷移指南中,我沒有提到能夠定義密碼:摘要。 在實際的Rails 4穩定源中也看不到它。

您是正確的, 此頁面將其提及為您可以做的事情,但是,似乎該功能已被刪除或尚未使其穩定在Rails 4中。

就其修復而言,看來在Rails 4 stable中,這些是您可以通過遷移定義的字段:

t.column
t.index
t.rename_index
t.timestamps
t.change
t.change_default
t.rename
t.references
t.belongs_to
t.string
t.text
t.integer
t.float
t.decimal
t.datetime
t.timestamp
t.time
t.date
t.binary
t.boolean
t.remove
t.remove_references
t.remove_belongs_to
t.remove_index
t.remove_timestamps

您可能必須將密碼存儲為字符串(但是請不要誤以為我說“將純文本密碼存儲為字符串”(!))……您仍然希望至少對其進行散列並加鹽。 )該視頻應該在Rails中提供很多幫助:Rails中的Authentication

身份驗證是一個復雜的問題,可能需要進行一些研究才能正確進行,但是這將是值得的。 我強烈建議您首先觀看該視頻,並對Rails中的用戶身份驗證有一個基本的了解,然后可能會研究一些可以使用的硬化寶石。 使用現有的gem既具有功能齊全的優勢,也可以被開源社區進行艱苦的戰斗。 如果您找到適合您的需求的寶石,並且經過了良好的審查和積極維護,通常它會比您自己制造的寶石更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM