牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

『RailsによるアジャイルWebアプリケーション開発 第4版』"9.3 イテレーションD3:ボタンの追加" で rake test:functionals するとエラーになる件

(MacOSX10.7.4, ruby1.9.3, Rails3.2.3)

9.3 イテレーションD3:ボタンの追加

P107
$ rake test:functionals
Run options: 

# Running tests:

.......E..............

Finished tests in 1.915650s, 11.4844 tests/s, 17.2265 assertions/s.

  1) Error:
test_should_create_line_item(LineItemsControllerTest):
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: product
:
修正してみる
  • app/controllers/line_items_controller.rb
:
  def create
    @cart = current_cart
    product = Product.find(params[:product_id])
    # @line_item = @cart.line_items.build(product: product)
    @line_item = @cart.line_items.build
    @line_item.product = product
    
:

テスト

$ rake test:functionals
Run options: 

# Running tests:

......................

Finished tests in 2.128648s, 10.3352 tests/s, 16.4424 assertions/s.

22 tests, 35 assertions, 0 failures, 0 errors 0 skips

テスト通った。

えーっと、なんで?

追記 *1

attr_accessible に追加するだけでよかった?

  • app/models/line_item.rb
  attr_accessible :product

*1:20120529