我有一个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)
?
答案 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
它简单易用。