[英]Why validate function is not called in Rails3.2.9?
代码如下:
class Seat < ActiveRecord::Base
attr_accessible :baggage, :flight_id, :name
def validate(record)
errors.add_to_base("You have too much baggage")
end
end
我希望每当有一条新记录写入数据库时,它都会引发错误。
但是,当@seat.save
新记录写入seats
数据库时,什么也没有发生
有人对此有想法吗?
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 ...但这通常是您想要的,因此请考虑是否真的要引发异常。
仅当您实现自定义验证器时才需要record参数,否则该方法已经知道要验证的记录(自身)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.