我有两个模型:用户和课程。我只希望将课程分配给管理员用户。
确保这一点的最佳方法是什么?我目前正在尝试创建一个自定义验证器,如下所示:
class BelongsToAdminValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
unless value.admin?
object.errors[attribute] << (options[:message] || "must belong to an admin")
end
end
end
但这导致Rspec说:
undefined method `admin?' for nil:NilClass
这是有道理的。
自定义验证器是最好的方法吗?或者我应该检查待分配的用户是否是控制器中的管理员?
答案 0 :(得分:2)
我认为最简单的方法是:
# Lesson model
validate :allow_only_admins
private
def allow_only_admins
errors.add(:user, "must be admin user!") if (user.blank? || !user.admin?)
end
我假设你有一个名为user
的关联,并且你的用户对象响应admin?
方法。