Ruby on rails rspec中出错,但在开发中工作正常(无法批量分配受保护的属性)

Ruby on rails rspec中出错,但在开发中工作正常(无法批量分配受保护的属性),ruby-on-rails,rspec,factory-bot,Ruby On Rails,Rspec,Factory Bot,我最近开始使用rspec和factory_girl,我正在为我的projects控制器中的create操作编写一个基本的控制规范 因此,我将此作为前置过滤器: before :each do @project = FactoryGirl.create(:project) @user = FactoryGirl.create(:user, first_name: "Jim", last_name: "Smith", username: "jsmith") session[:user_i

我最近开始使用rspec和factory_girl,我正在为我的projects控制器中的create操作编写一个基本的控制规范

因此,我将此作为前置过滤器:

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....

我应该补充一点,我的创建操作在开发中非常有效,而且我确实可以访问属性:first_name、:last_name、:username、,。。。在my user.rb文件中,它失败了,因为您将用户的实际属性传递给了项目,而不仅仅是对用户的引用

试一试

post :create, project: FactoryGirl.build(:project, user: user).attributes