私のアプリには、ユーザーだけでなく、管理者とスーパー管理者もいます。3 つすべてが同じ属性を共有するため、「user」、「admin」、または「super_admin」のいずれかの追加属性「role」を持つテーブルを 1 つだけ使用したいと思います。
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
今、私は SuperAdmins のみを取得するようなことをしたいと考えています。default_scope を使用すると、そこに到達するようです:
class SuperAdmin < Admin
default_scope where(["role = ?", "super_admin"])
# ...
end
今、私は default_scope も管理者に追加しています:
class Admin < User
default_scope where(["role = ?", "admin"])
# ...
end
ああ、そして... SuperAdmin.all はもう何も返しません。何故ですか?