我的應用程序不僅有用戶,還有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再沒有返回。這是爲什麼?