2013-03-26 82 views
3

我正在通过Michael Hartl的Ruby on Rails教程开展工作,并且正在为用户建模。 User_spec.rb测试失败,并且我读取的错误是由于某些原因,属性不能被读取为可访问,尽管代码说他们应该是。我已经完成了rake db:test:准备工作。任何帮助将不胜感激。ActiveModel :: MassAssignmentSecurity ::错误:/无法批量分配受保护的属性:用户

用户模型很简单。

应用程序/模型/ user.rb

class User < ActiveRecord::Base 
    attr_accessible :name, :email 

end 

在规格/型号/ user_spec.rb测试是这样的:你想通过大规模分配需要更新

require 'spec_helper' 

describe User do 

    before { @user = User.new(user: "Example User", email: "[email protected]") } 

    subject { @user } 

    it { should respond_to(:name) } 
    it { should respond_to(:email) } 

end 

回答

3

应该name没有user ...请检查下面

require 'spec_helper' 

describe User do 

    before { @user = User.new(name: "Example User", email: "[email protected]") } 

    subject { @user } 

    it { should respond_to(:name) } 
    it { should respond_to(:email) } 
end 

你犯错误,而与Example User创造了新的纪录user。它应该是name

+0

我是个白痴。谢谢! – 2013-03-26 15:00:24

+0

我很乐意给你一个赞成票,但缺乏这样做的声誉! :( – 2013-03-26 16:58:16

+1

维纳 - 我给你一个很好的答案和记录。堆栈溢出要求我有15的声望,才能接受我的选择。可悲的是我在声望2.( – 2013-03-29 07:23:05

2

有什么需要在你的attr_accessible

更改此

class User < ActiveRecord::Base 
    attr_accessible :name, :email 

end 

这样:

class User < ActiveRecord::Base 
    attr_accessible :name, :email, :user 

end 

虽然user似乎并不像正确的属性名称。它可能应该是username

+0

他不想为':user'添加新的'attr_accessible'。因为创建新记录时他错误地将'user'而不是'name'。 – Vinay 2013-03-26 15:00:13

相关问题