最近、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
したがって、私がやろうとしているのは、プロジェクトを作成するために少なくとも1人のユーザーが必要なため、ユーザー属性ハッシュとともにプロジェクト属性ハッシュを渡すことです。今、私が得るエラーは次のとおりです。
ActiveModel::MassAssignmentSecurity::Error:
Can't mass-assign protected attributes: first_name, last_name....
私の作成アクションは開発で完全に機能attr_accessible :first_name, :last_name, :username,...
し、user.rbファイルにあります。