私はAgile Webチュートリアルを若干変更します。私はRailsの3.2で機能テストを実行すると、私は次のエラーを取得しています:ここでMass Assignment Rails 3.2を使用してAgile Webチュートリアルで新しいアクションをテストする際のセキュリティエラー
test_should_get_new(OrdersControllerTest):
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: cart, deal
はorders_controller_test.rbコードです:ここで
test "should get new" do
cart = Cart.create
session[:cart_id] = cart.id
LineItem.create(cart: cart, deal: deals(:one))
get :new
assert_response :success
end
は受注器具です:
one:
name: MyString
address: MyText
email: MyString
pay_type: Check
ここにラインアイテムの備品があります:
one:
deal: one
order: one
ここ
のお得な器具である:ここで
one:
title: MyString
description: MyText
image_url: MyString
price: 9.99
は、注文コントローラのコードです:
def new
@cart = current_cart
if @cart.line_items.empty?
redirect_to store_url, notice: "Your cart is empty"
return
end
@order = Order.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @order }
end
end
私はFactoryGirlを使用してみましたが、それでも同じエラーメッセージが表示されました。ここでは、コードは次のとおりです。
test "should get new" do
cart = FactoryGirl.build(:cart)
session[:cart_id] = cart.id
LineItem.create(cart: cart, deal: deals(:one))
get :new
assert_response :success
end
そしてFactoryGirlコード:
FactoryGirlについてはFactoryGirl.define do
factory :cart do
end
end
私はまた、代わりに「ビルド」の「作成」しようとしたと同じエラーメッセージが表示されました。
設定で質量割り当てエラーをオフにすることはできますが、適切にテストすることが好きなので、私はむしろそうしません。
お願いします。
エラーは 'LineItem#create'によると思います。 LineItemモデルのコードを投稿できますか? –