我有三种用户类型:
enum role: { staff: 0, clinician: 1, admin: 2 }
每位员工都属于一所大学,并在注册期间选择他们的大学。我想强制执行模型验证,要求员工用户使用university_id。
为了实现这一目标,我在app / models / concerns / staff_user.rb中有这一行
validates :university_id, presence: true, if: staff?
这是整个文件:
require 'active_support/concern'
module StaffUser
extend ActiveSupport::Concern
included do
belongs_to :university
has_many :patients
has_many :referral_requests
validates :university_id, presence: true, if: staff?
end
class_methods do
end
end
然而,当我这样做时,我收到以下错误:
method_missing':undefined methodstaff?' for User(调用'User.connection'建立连接):Class(NoMethodError)
我是否需要进一步指明if:staff?如果是的话,怎么样?
谢谢!
答案 0 :(得分:1)
不要使用关注点试试这个:
validates : university_id, presence: true, if: lambda { self.role == 'staff' }
修改强>
实际上,来自@dukedave的更好的解决方案:
validates :university_id, presence: true, if: :staff?