【发布时间】:2011-06-30 10:01:41
【问题描述】:
假设我有一个带有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 和save_with_timestamps 也是如此,按此顺序混合,所以MyModel#save 调用save_with_timestamps,后者调用save_with_transaction,后者调用save_with_callbacks,最终调用原始save。
现在假设我想在没有交易的情况下保存。我可以调用save_without_transaction,但这不会调用代码来设置时间戳。
如何保存带有时间戳和回调但没有事务的模型?
我可以重新排序 mixins,但我的问题是省略中间,而不是专门的交易。如何省略方法链的中间部分?
注意 - 为了简洁起见,我使用了 RoR 的 alias_method_chain,但我的问题一般适用于 ruby
【问题讨论】: