我最近开始使用 rspec 和 factory_girl,并且正在为我的项目控制器中的创建操作制定基本控制规范。
所以我有这个作为之前的过滤器:
before :each do
@project = FactoryGirl.create(:project)
@user = FactoryGirl.create(:user, first_name: "Jim", last_name: "Smith", username: "jsmith")
session[:user_id] = @user.id # this maintains the session for the user created in the previous linew
end
我的项目希望有一个与之关联的用户。
所以在创建规范中,我有这个:
describe 'POST #create' do
attribute_merge = FactoryGirl.attributes_for(:project).merge(FactoryGirl.attributes_for(:user))
context "with valid attributes" do
it "creates a new project" do
expect{
post :create, project: attribute_merge
}.to change(Project,:count).by(1)
end
end
end
所以我要做的是传递项目属性散列和用户属性散列,因为一个项目需要至少一个用户才能创建。现在,我得到的错误是:
ActiveModel::MassAssignmentSecurity::Error:
Can't mass-assign protected attributes: first_name, last_name....
我应该补充一点,我的创建操作在开发中完美运行,并且attr_accessible :first_name, :last_name, :username,...
在我的 user.rb 文件中确实有