如何添加多个回调来rolizing gem

waq*_*ali 1 ruby-on-rails callback rolify

根据rolify gem文档.此gem将rolify方法添加到您的User类.您还可以在User类中为添加或删除角色时指定可选回调:

class User < ActiveRecord::Base
  rolify :before_add => :before_add_method

  def before_add_method(role)
    # do something before it gets added
  end
end
Run Code Online (Sandbox Code Playgroud)

rolify方法接受以下回调选项:

before_add
after_add
before_remove
after_remove
Run Code Online (Sandbox Code Playgroud)

Mongoid回调也受支持并以相同的方式工作.

当我添加多个回调来rolify它只适用于我的代码的最后一个

class User < ActiveRecord::Base
  rolify :before_add => :before_add_method
  rolify :before_remove => :before_remove_method

  private

  def before_add_method(role)
  #to do
  end
  def before_remove_method(role)
  #to do
  end
end
Run Code Online (Sandbox Code Playgroud)

只调用before_remove_method方法.有什么建议我们如何添加多个回调来rolizing gem?

waq*_*ali 6

我找到了解决方案.实际上我们需要传递每个回调分隔符,如下所示

rolify :before_add => :before_add_method, :before_remove => :before_remove_method
Run Code Online (Sandbox Code Playgroud)