2012-11-30 120 views
1

的代码如下:为什么在Rails3.2.9中不会调用validate函数?

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

我希望,每当一个新的记录wriiten到数据库中,它抛出的错误。

然而,当新的记录被@seat.save

wriiten到seats数据库有没有人有这个想法什么都没有发生?

+0

您是否尝试了没有记录参数('def validate ... end')?另外,我相信rails3的add_to_base [已弃用](http://apidock.com/rails/ActiveRecord/Errors/add_to_base)。 – buftlica

回答

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 ......但通常这是您想要的,所以请考虑您是否真的想要引发异常。

0

只有在您实施custom validator时才需要记录参数,否则该方法已知道它正在验证哪个记录(self)。

相关问题