Gem 求解惑关于 acts_as_xxx

huobazi · 2012年03月09日 · 最后由 lgn21st 回复于 2012年03月09日 · 2890 次阅读

求解惑,很多 gem 或者插件都是用 ‘acts_as_xxx’ 这样的名字,有什么典故吗?

印象中 1.x 版本有 rails core 维护的 acts_as_list 和 acts_as_tree,别的开发者就沿袭下来了

这个似乎是个传统,求真相

源于动态类型吧 http://en.wikipedia.org/wiki/Duck_typing

When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.

when a model acts as a list, it is a list...

同样的传统好像还有 xxx_fu

这个得从 Rails 考古得角度来解释: 用这个名字命名得插件,最开始都是增强ActiveRecord行为能力的,统称 acts_as_behaviors* 我最早从 Rails 1.2.6 开始作 Rails 项目,那个时候,Rails 自身自带三个 AR 插件,如果没有记错的话,作者都是 DHH

acts_as_tree
acts_as_list
acts_as_nested_set


到了 Rails 2 以后,这些插件都从 Rails 中抽取出来,变成了 gems 但是大家将这个命名规则保留了下来,作为一个 Convention,而且并不仅限于 AR 扩展插件了。 类似得还有 xxx_fu ,这里得 fu 是 Kungfu 得意思。

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