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

Han*_*Sun 1 ruby ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

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

但是,当新记录被seats数据库传输到数据库时没有任何反应@seat.save

有没有人有这个想法?

cla*_*asz 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
Run Code Online (Sandbox Code Playgroud)

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