活动管理导轨中的代码可重用性问题

时间:2019-02-18 10:01:44

标签: ruby-on-rails activeadmin

如何避免在活动的管理员操作项和控制器操作中使用通用代码。 我见过人们曾经在控制器和活动的admin操作项中编写相同的代码。 有什么办法可以避免吗?

示例就像我要取消一个用户,它需要3-4个步骤才能完成。 所以我已经在用户控制器中编写了此代码。

现在我在主动管理员中拥有资源用户,我想从主动管理员中删除该用户。我已经创建了一个动作项,并再次在成员动作中编写了相同的代码来删除用户。

有什么办法可以避免上述情况?

2 个答案:

答案 0 :(得分:0)

如果您想在不同的控制器之间共享代码,则应着眼于https://api.rubyonrails.org/v5.2.2/classes/ActiveSupport/Concern.html

答案 1 :(得分:0)

假设这在User寄存器块中(可能在app/admin/users.rb中),这可能会对您有所帮助。 action_item仅包含指向实际member_action的链接(实际上是发布的表单)。这只是示例代码:

action_item :cancel_user, :only => :edit do
 link_to 'Cancel user',  do_cancel_user_admin_user_path(resource),   method => :post
end

member_action :do_cancel_user, :method => :post do
  flash.notice = "User will be canceled"
  resource.cancel # I guess this would the 4 lines of code that you are repeating
  redirect_to edit_admin_user_path(resource) and return
end

让我知道这是否使您感到困惑。祝好运!

P.S。几周前有人问类似的问题,这可能也有帮助:How to reset user´s password by Devise authentication token directly from edit_page in Active Admin?