Rails验证 - 最大数据库条目

时间:2015-06-14 11:39:47

标签: ruby-on-rails rails-activerecord

我有一个rails项目,使用活动记录,并想知道是否有最大数量的单个条目的验证帮助程序。例如,如果你有一个表单提交而只是想要,比如说2,你只是希望将前两个持久化到表中,你会怎么做?

我已经阅读了手册并看过数字等,但它并不是我真正想要的。我试图在模型中编写自己的验证方法,但我假设有一个验证帮助器可以使这更容易:

  def validatePassengerNumber 
    if self.passengers.length > 2
      # unsure on how to refuse new data access to database
    end
  end

3 个答案:

答案 0 :(得分:1)

没有内置验证;至少我没有遇到任何问题。但是以下是一种强制执行此类验证的方法:

  def max_passengers
    if self.passengers.count > 2
      errors.add_to_base("There should not be more than 2 passengers.")
    end
  end

然后,您可以使用此验证来检查乘客数量。

答案 1 :(得分:1)

检查返回true后向基础添加错误,并禁止保存到数据库中。

 def validate_passenger_number        
     self.errors.add(:base, "exceed maximum entry") if self.passengers.length > 2
 end 

在相应的模型中调用此自定义验证。

  validate :validate_passenger_number, on: :create

答案 2 :(得分:1)

您可以添加回调并验证记录。

before_validation :validate_passanger_number

private

def validate_passanger_number
  errors.add("Sorry", "you have added maximum passengers.") if self.passengers.count > 2
end