繁体   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