0

問題を実証するために簡素化されたプロジェクトで

レーキテストの結果:

1) Failure:
test_can_mass_assign_accessible_flds(BrandTest) [ test/unit/brand_test.rb:11]:

Exception raised:
<#<ActiveModel::MassAssignmentSecurity::Error:  \
    Can't mass-assign protected attributes: brand_name, support_num>>.

2 tests, 2 assertions, 1 failures, 0 errors, 0 skips

2 つのモデルとテストは並行して構築されていますが、テストすると異なる結果が得られます。経験から、これは私のエラーであるはずですが、どこにあるのかわかりません。誰でも助けることができますか?

モデル:

class Brand < ActiveRecord::Base
  attr_accessible :brand_name, :support_num, :comment
end

class Mask < ActiveRecord::Base
  attr_accessible :brand_id, :brand_sku, :comment
end

テスト:

require 'test_helper'
class BrandTest < ActiveSupport::TestCase
  def setup
    @accessible_flds = { :brand_name => 'MyString', 
                         :support_num => 'MyString', 
                         :comment => 'MyText' }
  end

  test "can mass assign accessible flds" do
    assert_nothing_raised { Mask.new(@accessible_flds) }
  end
end

class MaskTest < ActiveSupport::TestCase
  def setup
    @accessible_flds = { :brand_id => 1, 
                         :brand_sku => 'MyString', 
                         :comment => 'MyText' }
  end

  test "can mass assign accessible flds" do
    assert_nothing_raised { Mask.new(@accessible_flds) }
  end
end

スキーマ:

ActiveRecord::Schema.define(:version => 20121212024505) do

  create_table "brands", :force => true do |t|
    t.string "brand_name"
    t.string "support_num"
    t.text   "comment"
  end

  create_table "masks", :force => true do |t|
    t.integer "brand_id"
    t.string  "brand_sku"
    t.text    "comment"
  end

end

環境:

Windows 7 Pro, SP 1
ruby -v  =>> ruby 1.9.3p327 (2012-11-10) [i386-mingw32]
rails -v =>> Rails 3.2.9
4

1 に答える 1

0

あなたのBrandTestクラスはまだ参照していますMask:

Mask.new(@accessible_flds) 

する必要があります

Brand.new(@accessible_flds)
于 2012-12-16T17:28:49.240 に答える