2013-03-26 67 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

相關問題