Ruby on rails Rails:在保存之前添加数据而不触发
我在一个表中转储一些事务数据 我有一个交易模型。 其中有一个before_save,我通过信用卡网关处理交易,并使用结果填写交易模型中的其余字段 我有一个事务观察器在监视,当它看到一个新的事务时会发出通知。然后,它尝试使用update_属性将该尝试的结果保存到事务中 这会导致无限循环,这并不奇怪,因为观察者会在我们开始之前和之后触发保存Ruby on rails Rails:在保存之前添加数据而不触发,ruby-on-rails,Ruby On Rails,我在一个表中转储一些事务数据 我有一个交易模型。 其中有一个before_save,我通过信用卡网关处理交易,并使用结果填写交易模型中的其余字段 我有一个事务观察器在监视,当它看到一个新的事务时会发出通知。然后,它尝试使用update_属性将该尝试的结果保存到事务中 这会导致无限循环,这并不奇怪,因为观察者会在我们开始之前和之后触发保存 有没有一种方法可以更新事务记录中的一个或两个属性而不触发before_save回调?是否是将通知结果移动到另一个表的唯一解决方案?快速且未经测试,但我使用的基本
有没有一种方法可以更新事务记录中的一个或两个属性而不触发before_save回调?是否是将通知结果移动到另一个表的唯一解决方案?快速且未经测试,但我使用的基本方法是允许回调上有一个条件。条件可以是你想要的任何东西
class ModelWithCallback < ActiveRecord::Base
before_save :update_stuff, :if => :update_needed?
private
def update_stuff
## Your callback code
end
def update_needed?
!(changed.any?{ |field| field == "name" || field == "address")
end
end
class ModelWithCallback:是否需要更新?
私有的
def更新内容
##你的回拨码
结束
需要def更新吗?
!(已更改。任何?{|字段|字段==“名称”| |字段==“地址”)
结束
结束
快速且未经测试,但我使用的基本方法是在回调上允许一个条件。条件可以是您想要的任何东西
class ModelWithCallback < ActiveRecord::Base
before_save :update_stuff, :if => :update_needed?
private
def update_stuff
## Your callback code
end
def update_needed?
!(changed.any?{ |field| field == "name" || field == "address")
end
end
class ModelWithCallback:是否需要更新?
私有的
def更新内容
##你的回拨码
结束
需要def更新吗?
!(已更改。任何?{|字段|字段==“名称”| |字段==“地址”)
结束
结束
您可以使用私有的ActiveRecord方法:
update_without_callbacks
因为它是私有的,所以您需要使用send
transaction.send(:update_without_callbacks)
您可以使用私有的ActiveRecord方法:
update_without_callbacks
因为它是私有的,所以您需要使用send
transaction.send(:update_without_callbacks)
太棒了!我不确定经常使用它是一个好主意,但它在这里确实有效。谢谢!这可能是在控制台上需要使用的东西,但我不知道在代码中使用它是否是一个好主意。太棒了!我不确定经常使用它是一个好主意,但它在这里确实有效。谢谢!这是可能使用的东西在控制台上有必要使用d,但我不知道在代码中使用它是否是个好主意。