我有一个非常胖的用户模型。我想将某些方法从它中分离出来并将它们放入我将创建的新模型中,称为Manager,它将继承自带有STI的User。
class User < ActiveRecord::Base
..
def user_method
end
end
class Manager < ActiveRecord::Base
..
def manager_method
end
end
我很好奇Devise如何处理这个问题。假设我已经有了一个用户,我们也说用户是经理。但是当他登录时,current_user对象将从User类实例化,对吧?我假设以真正面向对象的方式,Rails不允许我们从父类的实例访问子进程的方法......对吗?
那么我需要做些什么来确保current_user对象是type列中指定的类的实例,这是Rails中的STI的情况?
答案 0 :(得分:0)
您可以轻松地这样做:
class User < ActiveRecord::Base
ROLES = ['Admin', 'RoleX', 'RoleY']
devise :database_authenticatable, :blah
attr_accessible :email, :blah
validates :something
def method
end
end
例如,为管理员定义将继承用户但仍将在设计中保持独立角色的类。
class Admin < User
def some_method
end
end