1

私のコントローラーでは、アクションを作成してモデルを作成しようとするとエラーが発生しました[大量割り当てができません]が、私の仕様では、大量割り当てモデルのテストが成功しました!?!

私のモデル:

class Customer < ActiveRecord::Base
  attr_accessible :doc, :doc_rg, :name, :birthday, :name_sec, :address, :state_id, :city_id, :district_id,
                  :customer_pj, :is_customer, :segment_id, :activity_id, :person_type, :person_id

  belongs_to    :person , :polymorphic => true, dependent: :destroy
  has_many :histories
  has_many :emails

  def self.search(search)
    if search
      conditions = []
      conditions << ['name LIKE ?', "%#{search}%"]
      find(:all, :conditions => conditions)
    else
      find(:all)
    end
  end 
end

ランダム化された方法で、コントローラーにもattr_accessibleを設定するのにうんざりしています。

コントローラー:

class CustomersController < ApplicationController
  include ActiveModel::MassAssignmentSecurity
  attr_accessible :doc, :doc_rg, :name, :birthday, :name_sec, :address, :state_id, :city_id, :district_id, :customer_pj, :is_customer

  autocomplete :business_segment, :name, :full => true
  autocomplete :business_activity, :name, :full => true

  [...]

end

テスト、合格したテスト

  describe "accessible attributes" do
  it "should allow access to basics fields" do
    expect do
      @customer.save
    end.should_not raise_error(ActiveModel::MassAssignmentSecurity::Error)
  end    
end

エラー:

ActiveModel::MassAssignmentSecurity::Error in CustomersController#create
Can't mass-assign protected attributes: doc, doc_rg, name_sec, address, state_id, city_id, district_id, customer_pj, is_customer

https://github.com/megabga/crm

1.9.2p320

レール3.2

マックOS

pg

4

1 に答える 1

1

私のコントローラーでは、最も古いクラスを設定しています。次に、古いクラスにはパラメーターを渡す属性がありません。ごめん!

于 2012-07-05T03:11:12.450 に答える