0

在我们的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吗?谢谢。

4

0 回答 0