class User; attr_accessor :roles; end
module RegisteredUser
def default_context
Submission
end
end
module Admin
def default_context
Review
end
end
current_user = User.new
current_user.roles = ["registered_user", "admin"]
current_user.roles.each do |role|
role_module = role.gsub(/ /, '_').camelize
if module_exists?(role_module)
current_user.extend role_module.constantize
end
end
context = self.extend current_user.default_context
有没有一种方法来设置的User#default_context
的优先级?也就是说,我可以说Admin#default_context
总是优先于RegisteredUser#default_context
而不管current_user
的延伸顺序吗?
你可能可以用'extended'或'method_added'做一些事情,但是你需要在模块或某个地方有某种优先级规则机制... erm ... else。 –
我无法在ruby doc中找到这两种方法之一。 –
已移至伪格式化答案。 –