0

モデルにカスタム attr_accessor があります。

params[:model] を使用して新しいモデルを作成しようとすると、次のエラーが発生します。

ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes: entity_select, office_select):

class Expedient < ActiveRecord::Base

  belongs_to :enterprise
  has_many :document

  attr_accessor :entity_select
  attr_accessor :office_select

...

Rails は、これらが att_accessor であり、データベースのモデルに保存されるべきではないことを認識していると思います。

か否か ?

simple_form を使用してヘルプ フィールドを作成するために、この attr_accessor を使用しています。

<%= f.input :entity_select,:label => 'Entity', :input_html => {:class => "span2"}, :wrapper => :prepend do %>
  <span class="add-on"><i class="icon-search"></i></span><%= f.input_field :entity_select, :class => "span2 typeahead_entity", :id_selected => '99', :id => 'typeahead_centre'%>
<%end%>

typeahed には特別なテキスト入力が必要ですが、他の「実際の」フィールドと同様に、simple_form を使用してこの入力を作成したいので、「非実際の属性」を使用しています...

ありがとう、

編集:

ここでパラメータをモデル属性に割り当てるときの直前に、エラーは保存時ではありません:

    @expedient=Expedient.new.attributes=params[:expedient]
4

1 に答える 1

0

entity_selectおよび属性office_selectにアクセスできるようにします。

class Expedient < ActiveRecord::Base
  # Add:
  attr_accessible :entity_select, :office_select
于 2012-06-07T10:28:07.877 に答える