美文网首页
Rails 的多态关联

Rails 的多态关联

作者: 迦南大人 | 来源:发表于2015-10-27 00:15 被阅读918次

首先很久没有写过 markdown, 真是不进则退,还好 google 了下,要感谢这篇文章 献给写作者的 Markdown 新手指南

多态关联的使用场景

  • 假如一个网站可以展示图片和文章,现在要对两者加入评论功能,我们可能会想到各自添加一张关联表,image_comments 和 post_comments ,但是这两张表除了关联字段,其他几乎都是相同的。

  • 在微信开发的时候,有个自动回复功能和带参数二维码的功能。当用户给公众号发送了消息,触发了一条自动回复规则,系统就会自动调用相对应的回复内容给用户;当用户扫描二维码时,同样可以调用一个回复内容给用户,这里两者的回复内容基本是相同的结构。

  • 等等 这样类似的关系。

多态关联的用法

以评论功能为例,Rails 里是这么做的,辞穷,直接上代码吧,非真实代码,我想象的。

class Comment < ActiveRecord::Base
  belongs_to :commentable, polymorphic: true
end

class Post < ActiveRecord::Base
  has_many :comments, as: :commentable
end

class Image < ActiveRecord::Base
  has_many :comments, as: :commentable
end

我们需要一张 comments 表能关联 posts 表或 images 表

class CreateComments < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.integer :user_id
      t.text :content
      t.integer :commentable_id
      t.string  :commentable_type
      t.timestamps null: false
    end

    add_index :comments, :commentable_id
  end
end

基本奏是这样。然后就更正常的关联表一样使用就可以了,正常使用是怎么使用,可以参考这里 Polymorphic associations 。奏是这样。

相关文章

  • Rails 的多态关联

    首先很久没有写过 markdown, 真是不进则退,还好 google 了下,要感谢这篇文章 献给写作者的 Mar...

  • rails模型关联

    rails的orm很完善,可以非常方便的建立模型之间的关联.通过一些简单的代码实现一些常见的关联操作. 关联基础操...

  • [Rails] Active Record Associatio

    资料来源:Rails Guide Guide: -在模型之间构建关联-理解不同种类的关联-使用关联提供的方法 1....

  • 《Rails-Guides》Reading notes five

    Rails 支持六种关联 belongs_to关联 belongs_to关联创建两个模型之间一对一的关系,声明所...

  • Rails的模型自关联

    关于Rails的模型自关联有一个非常有意思的题目,大概是这样的: 问如何定义Person模型来满足以上需求? 题目...

  • Rails joins & includes &

    又是一个起源于群友(154112964 rails群 欢迎使用rails的所有人)讨论的玩意 先放一些模型&关联在...

  • rails 5的新特性

    belong_to 关联 强制校验在rails5中config.active_record.belongs_to_...

  • ActiveRecord关联关系之多态(polymorphic)

    在多态关联中同一个关联可以属于多个模型 在belong_to 中指定使用多态,可以理解为创建了一个接口,供别的模型...

  • Rails里面的includes

    Rails里面includes是比较常用的 依旧先码出背景 关联 includes方法指定使用关联时要按需加载的间...

  • rails中常用gem

    软删除 acts_as_paranoid 自关联 ancestry 拖拽排序 rails_sortable 避免n...

网友评论

      本文标题:Rails 的多态关联

      本文链接:https://www.haomeiwen.com/subject/ifexhttx.html