Rails callbacks 适用场景

tumayun · 2012年05月23日 · 最后由 linjunpop 回复于 2012年05月25日 · 3879 次阅读

callbacks 适用场景

callbacks,如:before_save, after_save。 我觉得里面应该不要写业务代码,而应该只写与数据库表相关的一些代码。如:字段format等等。

请教各位,以各位的经验来看,callbacks里面适合写哪些代码?

呼叫:@hysios @huacnlee @ywencn @lgn21st @Rei @hisea

无人问津。。。

比如你要保存订单,然后你有单价、数量,那总价就可以放在 before_save 里,让他自己算一下,然后存进去。 我举的是最简单的例子。。 要当心 before_save 被滥用,刚开始觉得爽,业务复杂后很容易被误伤

@ywencn 现在就是业务负责了,before_save 被滥用了,所以想重构下

基于我对 Callback 的理解,我认为 Callback 的初衷,就是为了让你用优雅的方式去序列化组织你的业务逻辑。Callback 当然能用于写业务代码。

Callback 不仅仅用于 ActiveRecord 对象上,在 Controller 中也有用到,同样的设计在其他很多地方都可以用到。

这是个权衡,如果业务逻辑比较多,callback 确实比较容易出现陷阱,改为显示调用会显得业务逻辑比较清晰

这个权衡是需要经验的

@tumayun callback 最好只用来处理数据的某些计算,不赞成用来处理业务逻辑,只是数据层本身逻辑处理会比较好

这是靠实践积累的,在你需要的时候用它。 http://rails-bestpractices.com/posts/695-use-after_commit

需要 登录 后方可回复, 如果你还没有账号请 注册新账号