一、gem 'ancestry'的作用
ancestry这个gem可以方便的帮助我们进行表的自身关联
例如:在一个user表中,有很多用户,其中有的用户作为上级,有的用户作为下属。那么我们就可以用ancestry来进行user表的自身关联,然后创建、查询、更新或删除相应上级或下属
假设user表中有name和age两个属性栏,我们进行如下操作
二、gem ancestry
的使用步骤
1.安装gem 'ancestry'
在gemfile中添加:
+ gem 'ancestry'
终端执行:bundle install
2.建立迁移文件,将ancestry栏位加入users表中,并打上索引
终端执行:
rails g migration add_ancestry_to_users ancestry:string:index
生成的迁移文件如图所示:
然后终端运行rake db:migrate
3.在user.rb这个model中加上has_ancestry
class User < ActiveRecord::Base
+ has_ancestry
end
4.此时就可以在console中进行上级和下属的增删改查了
使用children(子节点)方法可以下属的增删改查,使用parent(父节点)方法可以查询上级
u=User.first
u.children.create(name:"x",age:18) #创建(子节点)下属
u.children #查看所有的子节点(下属)
u.children.first.update(name:"xy",age: 20) #更新第一个子节点的内容(下属)
u.children.first.parent #查看第一个子节点的父元素(上级)
u.children.first.delete #删除第一个子节点(下属)
u= User.first #找到第一个用户
u.parent=User.create(name:"js",email:"js@gmail.com")#为第一个用户创建父节点(上级)
c= User.last #找到最后一个用户
c.parent = u #将第一个用户作为最后一个用户的父节点(上级)
User.create(name:"xxx",email:"xxx@gmail.com",parent:User.create(name:"yyy",email:"yyy@gmail.com"))#创建用户的同时,指定其父节点(上级)
三、参考资料
更多ancestry方法,使用说明和详细资料参考ancestry官方文档
网友评论