ActiveAdmin after_create:回调错误 - 参数数量错误(1表示0)

时间:2016-06-18 03:41:07

标签: ruby-on-rails activeadmin

我有一个ActiveAdmin页面,它在我的rails应用程序中创建了一条记录。 rails app仅查看/更新此模型,管理页面仅创建和销毁。

我正在尝试添加自定义方法以在创建后回调。它是这样的(从我在一些谷歌搜索中找到的):

    ActiveAdmin.register Company do

      controller do 

        def add_owner

         ## My code etc  

        end

      end

    end

    after_create :add_owner

我在这里添加它是因为我使用的是从AA表单传递的一些不在我公司模型中的参数。我正在传递一个电子邮件地址和一些其他字段,意图是我为新公司创建新用户等等,他们会收到电子邮件等等等。问题是,一旦我尝试这个,我得到:

ArgumentError at /admin/companies
wrong number of arguments (1 for 0)

我的筹码结束如下:

ArgumentError - wrong number of arguments (1 for 0):
   () Users/myapp/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/activeadmin-1b5c9259c4cf/lib/active_admin/callbacks.rb:17:in `run_callback'
   () Users/myapp/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/activeadmin-1b5c9259c4cf/lib/active_admin/callbacks.rb:80:in `block (3 levels) in define_active_admin_callbacks'
   () Users/myapp/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/activeadmin-1b5c9259c4cf/lib/active_admin/callbacks.rb:80:in `block (2 levels) in define_active_admin_callbacks'
   () Users/myapp/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/activeadmin-1b5c9259c4cf/lib/active_admin/resource_controller/data_access.rb:148:in `create_resource'
  inherited_resources (1.6.0) lib/inherited_resources/actions.rb:33:in `create'

我只是以错误的方式做这件事吗?

在我更好的错误页面的旁注上,我有这个:

Local Variables

method  
:add_owner
args    
[#<Company id: nil, name: "Test", name_short: "Test", address1: "Test", address2: "", city: "Test", province: "Test", postal: "Test", phone: nil, fax: "", url: "", user_id: nil, theme: nil, flag_active: true, flag_free: true, tenant_name: nil, twitter: "", facebook: "", linkedin: "", created_at: nil, updated_at: nil>]

AA是否通过我创建新公司作为参数回调?因此wrong number of arguments (1 for 0)

1 个答案:

答案 0 :(得分:1)

我最终这样做了:

controller do

  after_create do

    owner = User.find_or_create_by(email: params[:company][:email])
    owner.enrollments.new(company_id: @company.id, roles: ['owner'], title: params[:company][:title])
    owner.save(validate: false)
    owner.invite!(owner)

  end

end

它简单易用。