我的应用程序不仅有用户,还有管理员和超级管理员。由于所有三个共享相同的属性,我只想使用一个带有附加属性“角色”的表,该属性可以是“用户”、“管理员”或“超级管理员”:
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
现在我也在向 Admin 添加一个 default_scope:
class Admin < User
default_scope where(["role = ?", "admin"])
# ...
end
Aaaand... SuperAdmin.all 不再返回任何内容。这是为什么?