我的应用程序不仅有用户,还有Admins和SuperAdmins。由于三个共享相同的属性,我想只使用一个表带有附加属性的“角色”,它们可以是“用户”,“管理员”或“超级管理员”:Rails:ActiveRecord的default_scope和类继承
class User < ActiveRecord::Base
# with nickname and password
end
class Admin < User
def power
puts "admin rights"
end
end
class SuperAdmin < Admin
def superpower
puts "I've got the #{power}!"
end
end
现在我想做一些像SuperAdmin.all
只能获得超级管理员。使用default_scope似乎让我有:
class SuperAdmin < Admin
default_scope where(["role = ?", "super_admin"])
# ...
end
现在我加入了default_scope为Admin太:
class Admin < User
default_scope where(["role = ?", "admin"])
# ...
end
Aaaand ... SuperAdmin.all再没有返回。这是为什么?