【问题标题】:rails - How to know if model is being saved by a rake task?rails - 如何知道模型是否被 rake 任务保存?
【发布时间】:2013-10-28 18:23:52
【问题描述】:

是否有可能知道模型是否正在由 rake 任务保存/创建/更新?例如,如果模型由 rake 任务保存,我需要禁用 before_save 回调。谢谢!

【问题讨论】:

    标签: ruby-on-rails activerecord mongoid rake


    【解决方案1】:

    如果您想跳过任务中的所有验证,您可以possibly use this

    如果您想有条件地运行验证 you can use this 并在模型上设置一些表明应该跳过验证的值。

    例如,模型上有一个 validate 字段,用于存储是否应验证该记录。

    validates :user_id, presence: true, unless: 'validate == false'
    

    这有点小题大做。

    如果您要问是否有一些干净的方法可以让模型中的代码知道从哪里调用它......不,我不知道。使用条件验证或提供的方法之一跳过特殊情况的验证。

    【讨论】:

    • 谢谢!我也想知道第二种方法:我将只在我的 rake 任务模型中设置 validate 属性,然后在 before_save 中检查它的存在并在之后将其删除,因为它不需要持久化。
    • 您也可以使用虚拟属性而不是创建数据库列。如果它永远不会访问您的数据库,则没有理由需要在之后将其删除。当模型保存到数据库时,它应该只尝试保留映射到数据库列的属性。
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2012-06-25
    • 2016-06-03
    • 2016-09-20
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 2011-07-13
    相关资源
    最近更新 更多