我有Transaction
和Debt
型号。
transaction has_one: :debt
debt belongs_to: :transaction
当用户创建交易并将其标记为债务时,Transaction
模型会创建transaction.debt
并且在Debt
模型中我拥有处理债务的所有逻辑:运行before_create
和{ {1}}方法。
因此,我需要更新事务的相同行为。我是否可以从after_create
模型运行before_update
模型的更新方法(after_update
和Debt
),而无需任何更新属性?
据我所知,所有更新方法,例如Transaction
和update
都需要一些更新属性。
感谢您的帮助!
答案 0 :(得分:1)
由于ActiveRecord上下文,您可以运行特定的回调,如下所示:
transaction.run_callbacks(:update)
答案 1 :(得分:0)
如果您将before_update
和after_update
回调定义为实际方法,则可以直接在回调之外调用它们。
class Debt < ActiveRecord::Base
before_update :do_before
after_update :do_after
def do_before
# Before update processing
end
def do_after
# After update processing
end
当债务以通常的方式更新但您可以从交易中调用时,这些回调将由活动记录调用:
self.debt.do_before
self.debt.do_after