最近用到的一些gem

ancestry

ancestry 是一个做分类的 gem,类似于 acts_as_tree,一般用户商城的多级分类系统。封装了很多很方便的 helper,比如说

.root #顶级分类
.root? #判断是否顶级分类
.parent #父级分类
.children #子分类
.siblings #同分类下所有对象
...

使用时只需要建立一个 model,比如说 category,包含一个 ancestry 的字段,通过 ancestry 字段来判断该分类的层级关系。

实际使用的时候,遇到一个需求无法实现,就是一个子分类无法从属于多个父级分类。

enumerize

这个 gem 主要用来做某个字段的校验,比如像 gender 的字段,可能值一般只有 malefemale ;像 role 的字段,可能值也是有限的,比如 adminsuperadminuservipeditor 之类的。这个时候,就可以用 enumerize 这个 gem 在 model 层对该字段做校验。

ranked-model

这个 gem 的主要功能是做排序的。之前在项目中,如果有排序的需求,我的做法是新建一个 weight 的整数字段,即权重。输出的时候按照权重的大小来排序。但 weight 的大小是需要手工修改的。当数据一多,操作起来就非常麻烦。 ranked-model 实际上就是解决了手动修改权重的麻烦。配合着 Ajax,可以直接拖动条目来修改排序,ranked-model 实际上替我们在后台自动计算权重,使之得到正确的排序。

· rails