【问题标题】:Validation, callback验证,回调
【发布时间】:2010-12-07 16:08:53
【问题描述】:

我在模型上有一条自定义验证规则,规定用户不能拥有超过 3 条处于活动状态的记录。

验证 :not_over_active_limit, :before => :create

当我需要更新用户的 3 条活动记录之一时,就会出现问题。当我打电话给record.update!或 record.save!,会引发验证错误,提示我的活动记录不能超过三个。但我只希望验证在 before_create 上运行,而不是在保存时运行!或更新!

我可以通过调用 save(false) 来解决这个问题,但我不想这样做。

有什么处理建议吗?

【问题讨论】:

    标签: ruby-on-rails validation callback


    【解决方案1】:

    你要找的代码是

     validate :not_over_active_limit, :on => :create
    

    不是:before,而是:on

    【讨论】:

    • 那行不通。但这确实:验证 :not_over_active_limit, :on => :create, :if => Proc.new { |r| r.new_record? }
    • 这很有趣,因为您指定的过程本质上意味着您只想在创建时进行验证。
    猜你喜欢
    • 1970-01-01
    • 2012-02-15
    • 2018-02-22
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 2011-04-23
    相关资源
    最近更新 更多