存在验证
Validation for existence
我想验证我的条目是否存在于数据库中。换句话说,检查输入数据是否存在于 table 中,如果不放手,则停止并显示错误消息,如存在验证等。
据我所知,Rails 4.2 中没有验证:存在或类似的东西。
问题:有简单的方法吗?
如果没有,我可以像这样在我的控制器中手动检查是否存在:
@client = Client.where("name = ?", @request.name).take
if @client.present?
@request.client_id = @client.id
else
# some error message
render 'new'
end
我认为这应该可行,但如何显示错误消息,而不是闪烁。
您可以使用 uniqueness helper
来验证客户端名称是否唯一
class Client < ActiveRecord::Base
validates :name, uniqueness: true
end
如果这不能满足您的需求,那么您可以随时创建一个 custom validation
方法并添加错误
class Client < ActiveRecord::Base
validate :some_custom_method
def some_custom_method
# check for some condition
# add error messages if that condition fails
end
end
P.S 如果您使用唯一性助手,请确保在您的数据库中添加唯一性约束。
更新:
您可以像这样添加错误消息:
def some_custom_method
errors.add(:base, "error message") unless some_condition
end
查看详情working with errors
。
我想验证我的条目是否存在于数据库中。换句话说,检查输入数据是否存在于 table 中,如果不放手,则停止并显示错误消息,如存在验证等。 据我所知,Rails 4.2 中没有验证:存在或类似的东西。 问题:有简单的方法吗?
如果没有,我可以像这样在我的控制器中手动检查是否存在:
@client = Client.where("name = ?", @request.name).take
if @client.present?
@request.client_id = @client.id
else
# some error message
render 'new'
end
我认为这应该可行,但如何显示错误消息,而不是闪烁。
您可以使用 uniqueness helper
来验证客户端名称是否唯一
class Client < ActiveRecord::Base
validates :name, uniqueness: true
end
如果这不能满足您的需求,那么您可以随时创建一个 custom validation
方法并添加错误
class Client < ActiveRecord::Base
validate :some_custom_method
def some_custom_method
# check for some condition
# add error messages if that condition fails
end
end
P.S 如果您使用唯一性助手,请确保在您的数据库中添加唯一性约束。
更新:
您可以像这样添加错误消息:
def some_custom_method
errors.add(:base, "error message") unless some_condition
end
查看详情working with errors
。