验证存在

时间:2015-06-18 05:10:29

标签: ruby-on-rails validation ruby-on-rails-4.2

我想验证我在数据库中存在的条目。换句话说,检查表中是否存在输入数据,如果没有,则停止并显示错误消息,如在状态验证等。 所以据我所知,在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

我认为这应该可行,但如何显示错误信息,而不是闪存。

1 个答案:

答案 0 :(得分:1)

您可以使用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如果您使用唯一性助手,请确保在您的数据库上添加唯一的constaint。

更新

您可以添加如下错误消息:

def some_custom_method
  errors.add(:base, "error message") unless some_condition
end

详情结帐working with errors