我正在使用 Rails 第 4 版(rails 3.2+)进行敏捷 Web 开发。长话短说,我最终搞砸了,所以我将正确的代码从书籍网站复制到正确的文件中。具体来说,我正在做一些功能测试,这是我替换的代码。当我跑的时候:
rake test:functionals
我有:
0 failures, 6 errors
每个错误都是这样的:
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes:
之前处理过这个错误,我能够推断出 6 个错误来自我复制和粘贴的代码中的 6 个属性方法。以下是来自各种功能测试的一些示例:
test "should update cart" do
put :update, id: @cart, cart: **@cart.attributes**
assert_redirected_to cart_path(assigns(:cart))
end
test "should update order" do
put :update, id: @order, order: **@order.attributes**
assert_redirected_to order_path(assigns(:order))
end
test "should update line_item" do
put :update, id: @line_item, line_item: **@line_item.attributes**
assert_redirected_to line_item_path(assigns(:line_item))
end
现在,我也知道错误是由于属性 b/c 如果我用哈希替换它们就会消失:
model: {attribute: value, attribute: value, attribute: value, etc. }
代替:
model: @model.attributes
所有被分配的属性都在我的模型中的 attr_accessible 方法中。因此,我真的无法弄清楚为什么属性方法不起作用。任何和所有的帮助将不胜感激。