在我们的rails 3.2.12 engine
中,有一个model misc_definition
. 这是 misc_definition 模型中的一行:
attr_accessible :brief_note, :for_which, :name, :ranking_order, :as => :role_new
创建新的 misc_definition 的形式是:
<%= simple_form_for @misc_definition do |f| %>
<%= f.input :name, :label => name_label %>
<%= f.input :brief_note, :label => "Brief Note:", :input_html => {:rows => 2} %>
<%= f.input :for_which, :input_html => {:value => @for_which}, :as => :hidden %>
<%= f.input :ranking_order, :label => 'Ranking Index', :placehoder => '1, 2, 3 ...'%>
<%= f.button :submit, 'Save' %>
<% end %>
上面的表格中没有active
新的 misc_definition。中的错误rspec
是:
ActiveModel::MassAssignmentSecurity::Error←[0m:
←[31mCan't mass-assign protected attributes: active←[0m
←[36m # ./app/controllers/projectx/misc_definitions_controller.rb:29:in `new'←[0m
控制器中的第 29 行是:
@misc_definition = Projectx::MiscDefinition.new(params[:misc_definition], :as => :role_new)
active
添加到列表时错误消失,:role_new's
attr_accessible
直到每个字段都添加到attr_accessible
列表中。但是,在常规的 rails 应用程序中,如果该字段不在 列表中,则没有问题attr_accessible
,rails 应用程序只是跳过为该字段分配任何值。mass_assignment
但是在 Rails 引擎中,它会为任何不在新表单上的字段抛出错误。
有人知道 mass_assign 错误rails engine
吗?它是一个错误rails engine
吗?谢谢。