Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Rails教程(Hartl)中的故障-第7节-“;未知属性:密码";_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 Rails教程(Hartl)中的故障-第7节-“;未知属性:密码";

Ruby on rails 3 Rails教程(Hartl)中的故障-第7节-“;未知属性:密码";,ruby-on-rails-3,Ruby On Rails 3,我在论坛上搜索了这个问题,并在spork网站上使用了一个解决方案,从规范选项中删除“-drb”,让它加载并运行,但这个持久性错误仍然不断出现。我也在没有spork的情况下运行它。我已经提前阅读了一堆rspec信息,如前所述,我已经翻阅了spork信息,但还没有。我还检查了打字错误,缩进,编码。。。我仍然不知所措。其他问题,我已经解决了,但这一个我。如果有人提出建议,请参见下文: 失败: 1) 用户密码加密有\u密码吗?如果密码不匹配,则方法应为false 失败/错误:@user=user.cre

我在论坛上搜索了这个问题,并在spork网站上使用了一个解决方案,从规范选项中删除“-drb”,让它加载并运行,但这个持久性错误仍然不断出现。我也在没有spork的情况下运行它。我已经提前阅读了一堆rspec信息,如前所述,我已经翻阅了spork信息,但还没有。我还检查了打字错误,缩进,编码。。。我仍然不知所措。其他问题,我已经解决了,但这一个我。如果有人提出建议,请参见下文:

失败:

1) 用户密码加密有\u密码吗?如果密码不匹配,则方法应为false 失败/错误:@user=user.create!(@attr) ActiveRecord::UnknownAttributeError: 未知属性:密码 #./spec/models/user_spec.rb:94:in'block(3层)in'

以0.836秒完成 1例,1例失败
您确定已将:password作为虚拟属性添加到您的用户模型中吗?这很容易错过,但你需要包括线

attr_accessor :password

从问题提出(2011年)到现在,这可能已经发生了变化,但我最初遇到了相同的问题——我添加了密码等所有测试,用户初始化本身由于“未知属性:密码”而全面失败

从表面上看,GrahamJRoy的回答(更重要的是,随后对精化的评论)完美地解决了我的困惑

然而,我继续阅读教程的下一部分,并了解到用户模型中的以下行暗示了相同的事情:

has_secure_password
添加此项后,我不再需要显式attr_访问器声明:

attr_accessor :password, :password_confirmation

我对本教程唯一的不满是,Michael没有警告您,如果您在本教程首次向您显示更新的构造函数时向User.new()添加:password和:password\u确认,则所有用户引用都将开始失败。我原以为只有新的测试会失败,以为我偏离了轨道,所以在继续本教程之前在其他地方(比如这里)搜索解决方案。

请确保在
models/user.rb中将
attr\u accessible
更改为
attr\u accessor


我犯了同样的错误,却忽略了。

非常感谢。我只是把所有的东西都找了出来。绝对正确!嘿,格雷厄姆,你能解释一下为什么当我们有attr_accessible:password时,attr_accessor:password是必需的吗。它确实有效,但我不明白为什么attr_访问器将密码设置为模型上的虚拟属性,以及访问密码的方法(get和set)。attr_accessible略有不同,因为它表明属性是否可以从模型外部访问。如果您查看模型上的一些其他属性,这些属性在模型外是不可见的(加密的\u密码和salt属性就是很好的例子),这意味着控制器对它们无能为力,只有模型知道(并且应该知道)。非常感谢。花上几个小时来解决这个问题。