假设我有一个带有save
方法的类,以及三个使用别名修改它的 mixin,例如
module Callbacks
def save_with_callbacks
callback :before_save
save_without_callbacks
end
end
alias_method_chain :save, :callbacks
end
同样对于save_with_transaction
and save_with_timestamps
,按此顺序混合, soMyModel#save
调用save_with_timestamps
,调用save_with_transaction
,调用save_with_callbacks
,最后调用 original save
。
现在假设我想在没有交易的情况下保存。我可以打电话save_without_transaction
,但这不会调用代码来设置时间戳。
如何使用时间戳和回调保存我的模型,但没有事务?
我可以重新排序 mixins,但我的问题是省略中间,而不是专门的交易。如何省略方法链的中间部分?
注意 - 为了简洁起见,我使用了 RoR 的 alias_method_chain,但我的问题一般适用于 ruby