为什么在Rails3.2.9中没有调用验证函数?

时间:2012-11-30 13:03:02

标签: ruby-on-rails ruby ruby-on-rails-3

代码如下:

class Seat < ActiveRecord::Base
  attr_accessible :baggage, :flight_id, :name
  def validate(record)
    errors.add_to_base("You have too much baggage")
  end
end

我预计每当新记录进入数据库时​​它就会抛出错误。

然而,当新记录通过seats

进入@seat.save数据库时,没有任何反应

有没有人有这方面的想法?

2 个答案:

答案 0 :(得分:5)

validate(record)看起来很奇怪。你应该试试

class Seat < ActiveRecord::Base
  attr_accessible :baggage, :flight_id, :name
  validate :valid_baggage

  def valid_baggage
    errors.add_to_base("You have too much baggage")
  end
end

另请注意,您需要调用@seat.save!(而不是@seat.save)才能获得异常。 @seat.save只会返回true或false ......但这通常是你想要的,所以请考虑你是否真的要提出异常。

答案 1 :(得分:0)

只有在实现custom validator时才需要记录参数,否则该方法已经知道它正在验证哪条记录(自己)。