我在与主用户表(User.rb)分开的表中声明了以下枚举。我在这个表中注册用户并给他们一个角色:
school_user.rb
class SchoolUser < ActiveRecord::Base
belongs_to :user
belongs_to :school
enum user_type: [:school, :student, :parent, :teacher]
def school?
end
def teacher?
end
def student?
end
def parent?
end
end
我认为我不必在这里定义每个角色,但我试过了。
我之前使用布尔方法来分隔用户,但切换到枚举。我曾经使用这种方法类型来限制基于角色的视图:
...unless current_user.teacher?...
这工作正常,但现在我在与用户表不同的模型中声明的枚举它不起作用。
用户通过user.rb和school_user.rb之间的关系发挥作用。这有效。我只是想找到一种方法来根据上面的视图中的用户角色/类型设置访问权限。
我希望不是,但我认为我必须在整个申请过程中改变所有条件?
我试过了:
...unless current_user.school_user.teacher?...
和其他变化。
非常感谢任何帮助。感谢。
编辑:User.rb
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :first_name, presence:true,
length: {minimum: 4 }
validates :last_name, presence:true
has_many :messages, foreign_key: :sender_id
has_many :notes
has_one :school_user
accepts_nested_attributes_for :school_user
答案 0 :(得分:1)
您可以将此方法委托给:school_user
:
class User < ActiveRecord::Base
delegate :school?, :student?, :parent?, :teacher?, to: :school_user
此外,请从SchoolUser
类中删除此方法,如注释