考虑以下几点:
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
延长?