对于#<admin:0x00000011ead6f0>

时间:2015-12-11 07:50:47

标签: ruby-on-rails ruby rails-admin

我正在使用rails_admin并且我已经通过添加一些代码来覆盖删除操作:

if request.get? # DELETE

   respond_to do |format|
       format.html { render @action.template_name }
       format.js   { render @action.template_name, layout: false }
   end

elsif request.delete? # DESTROY

   redirect_path = nil

   # puts 'CUSTOM DELETE'
   # This code to assign current user that will delete following object.
   # History tracker can not assign current_user by itself.
   if @object.has_attribute?(:updater_id)
      @object.updater = _current_user
      @object.save
   end

   @auditing_adapter && @auditing_adapter.delete_object(@object, @abstract_model, _current_user)
   if @object.destroy
      flash[:success] = t('admin.flash.successful', name: @model_config.label, action: t('admin.actions.delete.done'))
      redirect_path = index_path
   else
      flash[:error] = t('admin.flash.error', name: @model_config.label, action: t('admin.actions.delete.done'))
      redirect_path = back_or_index
   end

   redirect_to redirect_path
 end

当调用删除操作时,它会抛出:

undefined method `nil' for #<Admin:0x00000011ead6f0>

是的,这很奇怪。我总是为nilClasses获取未定义的方法但是这个。对于已定义的对象,这是nil。这发生在@object.updater - _current_user

@object是将被销毁的模型。 _current_user模型中记录了Admin

为什么会出现这种错误?

我使用的模型有:CategorySubCategorySub2CategoryAdmin。 类别has_many SubCategory,SubCategory has_many Sub2ategory。管理员为updater_current_user

当我尝试通过rails_admin删除Sub2Category时发生此错误。

回溯:

NoMethodError (undefined method `nil' for #<Admin:0x00000013b9b960>):
config/initializers/rails_admin_delete_override.rb:40:in `block (2 levels) in <class:Delete>'
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/bundler/gems/rails-8b487239e801/actionpack/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.0ms)
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/bundler/gems/rails-8b487239e801/actionpack/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.0ms)
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/bundler/gems/rails-8b487239e801/actionpack/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.0ms)
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/bundler/gems/rails-8b487239e801/actionpack/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (25.0ms)
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/web-console-2.2.1/lib/web_console/templates/_markup.html.erb (1.0ms)
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/web-console-2.2.1/lib/web_console/templates/_inner_console_markup.html.erb within layouts/inlined_string (0.0ms)
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/web-console-2.2.1/lib/web_console/templates/_prompt_box_markup.html.erb within layouts/inlined_string (0.0ms)
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/web-console-2.2.1/lib/web_console/templates/style.css.erb within layouts/inlined_string (0.0ms)
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/web-console-2.2.1/lib/web_console/templates/console.js.erb within layouts/javascript (33.0ms)
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/web-console-2.2.1/lib/web_console/templates/main.js.erb within layouts/javascript (1.0ms)
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/web-console-2.2.1/lib/web_console/templates/error_page.js.erb within layouts/javascript (0.0ms)
Rendered D:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/web-console-2.2.1/lib/web_console/templates/index.html.erb (84.0ms)

0 个答案:

没有答案