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中找到這兩種方法之一。 –
已移至僞格式化答案。 –