Polymorphic:多态关联

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

如果一个模型可能会关联多种模型,我们可以创建 Polymorphic 类型的关联,也就是多态关联 .. 比如一个评论,可能属于文章模型,也可能属于照片模型,也就是你在文章或者照片的内容上都可以去添加评论。

先创建一个 Comment 模型,表示评论 ...

rails generate model Comment content:text

再添加一个 Photo 模型,表示照片 ..

rails generate model Photo title:string

然后先找到 Comment 模型 ... 编辑一下它 .. 添加一个 belongs_to :commentable ... 然后把 polymorphic 设置成 true ... 这里的 :commentable 是我们自己起的一个名字 ... 它有点像是一个接口 ... 在可以添加评论的模型上需要用到这个名字 ..

再找到 Post 模型 ... 添加一个 has_many :comments, as: :commentable ...

然后找到 Photo 模型 .. 也添加一个 has_many :comments, as: :commentable ..

再打开创建评论表的 migration ...

添加一个 t.references :commentable, polymorphic: true, index, true ... 这行代码会在 comments 表里添加一个 commentable_type ,还有一个 commentable_id ...

运行一下 migraiton ... rails db:migrate ..

完成以后去查看一下数据库 .. . 检查一下 comments 这个数据表的结构 ... 这里会出现一个 commentable_type .. 类型是字符串 .. 在创建评论的时候它可以存储评论的内容的类型,比如 Post 或者 Photo ..

commentable_id 是一个整数类型的栏 .. 它存储的是评论的内容的 id 号 ... 可能是文章的 id ,也可以是照片的 id ...

Polymorphic:多态关联《 Rails:关联 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点