我需要编写一个自定义验证器来检查数据库中是否存在记录。有点像验证唯一性的反面,但我找不到能够在内置验证器中实现我想要的东西。
我要做的是检查引用者是否存在于Users表中。如果引用者的用户名是“testuser”,我想在Users表中检查“testuser”是否确实存在。
我创建了一个自定义验证器:
class ReferrerExistsValidator < ActiveModel::EachValidator
但是我不确定如何继续从那里获取数据库,任何指针?
答案 0 :(得分:1)
编写以下验证类
class ReferrerExistsValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
unless User.find_by_username(value)
object.errors[attribute] << (options[:message] || "referrer does not exist")
end
end
end
将以下内容添加到相关模型
validates :referrer_exists => true
答案 1 :(得分:0)
我是铁杆/编码的新手,我可能会误解你,但你不能这样做:
@user.each do |user|
unless @user.username == current_user.referral_name
:alert "no user found"
else whatever
end
end
编辑:这根本不起作用 - 忽略这一点,让我考虑一下;)