最近用到的一些gem
ancestry
ancestry 是一个做分类的 gem,类似于 acts_as_tree,一般用户商城的多级分类系统。封装了很多很方便的 helper,比如说
.root #顶级分类
.root? #判断是否顶级分类
.parent #父级分类
.children #子分类
.siblings #同分类下所有对象
...
使用时只需要建立一个 model,比如说 category
,包含一个 ancestry
的字段,通过 ancestry
字段来判断该分类的层级关系。
实际使用的时候,遇到一个需求无法实现,就是一个子分类无法从属于多个父级分类。
enumerize
这个 gem 主要用来做某个字段的校验,比如像 gender
的字段,可能值一般只有 male
和 female
;像 role
的字段,可能值也是有限的,比如 admin
、superadmin
、user
、vip
、editor
之类的。这个时候,就可以用 enumerize 这个 gem 在 model 层对该字段做校验。
ranked-model
这个 gem 的主要功能是做排序的。之前在项目中,如果有排序的需求,我的做法是新建一个 weight
的整数字段,即权重。输出的时候按照权重的大小来排序。但 weight
的大小是需要手工修改的。当数据一多,操作起来就非常麻烦。 ranked-model 实际上就是解决了手动修改权重的麻烦。配合着 Ajax,可以直接拖动条目来修改排序,ranked-model
实际上替我们在后台自动计算权重,使之得到正确的排序。