任何人都可以通过示例详细解释多态关联吗?

阿南德

我知道,通过多态关联,一个模型可以在一个关联上属于多个其他模型。我想知道单个关联的含义。

阿努伊·坎德尔瓦尔

您对多态关联的定义是正确的。术语“单协会”的手段,我们可以使用的组合record typerecord id服务多个belongs_to关系。我知道这听起来和定义本身一样含糊。因此,我将使用Rails指南中描述的多态关联示例

class Picture < ApplicationRecord
  belongs_to :imageable, polymorphic: true
end

class Employee < ApplicationRecord
  has_many :pictures, as: :imageable
end

class Product < ApplicationRecord
  has_many :pictures, as: :imageable
end

在这里,picture模型是一个多态模型,有两列,imageable_idimageable_type它使用这两列来建立与任何具有has_many :pictures, as: :imageable关系的模型的关系。在上面的例子中,当我们增加一个Picture用于EmployeeID为3,记录在创建Picture模型为:

#<Picture id: 1, url: "some_url", imageable_type: "Employee", imageable_id: 3....>

请注意imageable_type和imageable_id如何帮助我们确定该图片所属系统中的确切记录。对于ProductID为3的图片,图片如下:

#<Picture id: 1, url: "some_url", imageable_type: "Product", imageable_id: 3....>

没有多态关联,我们将不得不添加2列,employee_id并且product_id必须belongs_to与上述模型具有关联。想象一下一个场景,其中5-6个不同的模型可能有图片!

使用多态关联有什么优势?

  1. 它们有助于建立用于与共享资源(例如图片,评论等)进行交互的统一API。

  2. 轻松添加可以共享资源的新模型,而无需添加新列。这也有助于避免记录中有多个未使用的列

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

任何人都可以在HTML服务的GAS文档中解释用户对象示例吗?

来自分类Dev

任何人都可以解释它+(+ i--)

来自分类Dev

任何人都可以逐步解释该过程

来自分类Dev

任何人都可以解释以下声明

来自分类Dev

任何人都可以对以下javascript RE代码进行解释吗?

来自分类Dev

任何人都可以解释这个Javascript数据结构吗?

来自分类Dev

任何人都可以在这段代码中解释我的打印语句吗?

来自分类Dev

任何人都可以在android studio中使用chromecast android示例吗?

来自分类Dev

任何人都可以更正此代码吗?

来自分类Dev

任何人都可以处理吗?

来自分类Dev

任何人都可以通过PIPELINED函数帮助我吗?

来自分类Dev

任何人都可以详细解释以下两个命令正则表达式

来自分类Dev

输出:没有错误您可能分配了太多内存 任何人都可以详细解释

来自分类Dev

任何人都可以向我解释dispatch_sync和dispatch_async之间的区别吗?

来自分类Dev

任何人都可以解释网络服务器日志数据中的字段吗?

来自分类Dev

任何人都可以指导我查看用于生成中性景观模型的 Netlogo 代码示例吗?

来自分类Dev

任何人都可以通过输入用户名和密码来帮助获得响应吗?

来自分类Dev

任何人都可以解释待处理的意图及其参数

来自分类Dev

任何人都可以在Perl中解释一下(我的$ self = shift)

来自分类Dev

任何人都可以在PHP中解释此数组声明-> $ a {0} =“ value”

来自分类Dev

任何人都可以解释这个关于选项的Swift代码

来自分类Dev

任何人都可以解释为什么这代码连接,而不是增加的数值?

来自分类Dev

任何人都可以解释待处理的意图及其参数

来自分类Dev

任何人都可以在PHP中解释此数组声明-> $ a {0} =“ value”

来自分类Dev

任何人都可以在此代码中解释javax.swing.SwingUtilities.invokeLater的使用

来自分类Dev

任何人都可以解释这意味着什么

来自分类Dev

任何人都可以向初学者解释什么是终端配置文件?

来自分类Dev

java 任何人都可以解释这种类型的逻辑

来自分类Dev

任何人都可以请解释我对我的反应 setState new

Related 相关文章

  1. 1

    任何人都可以在HTML服务的GAS文档中解释用户对象示例吗?

  2. 2

    任何人都可以解释它+(+ i--)

  3. 3

    任何人都可以逐步解释该过程

  4. 4

    任何人都可以解释以下声明

  5. 5

    任何人都可以对以下javascript RE代码进行解释吗?

  6. 6

    任何人都可以解释这个Javascript数据结构吗?

  7. 7

    任何人都可以在这段代码中解释我的打印语句吗?

  8. 8

    任何人都可以在android studio中使用chromecast android示例吗?

  9. 9

    任何人都可以更正此代码吗?

  10. 10

    任何人都可以处理吗?

  11. 11

    任何人都可以通过PIPELINED函数帮助我吗?

  12. 12

    任何人都可以详细解释以下两个命令正则表达式

  13. 13

    输出:没有错误您可能分配了太多内存 任何人都可以详细解释

  14. 14

    任何人都可以向我解释dispatch_sync和dispatch_async之间的区别吗?

  15. 15

    任何人都可以解释网络服务器日志数据中的字段吗?

  16. 16

    任何人都可以指导我查看用于生成中性景观模型的 Netlogo 代码示例吗?

  17. 17

    任何人都可以通过输入用户名和密码来帮助获得响应吗?

  18. 18

    任何人都可以解释待处理的意图及其参数

  19. 19

    任何人都可以在Perl中解释一下(我的$ self = shift)

  20. 20

    任何人都可以在PHP中解释此数组声明-> $ a {0} =“ value”

  21. 21

    任何人都可以解释这个关于选项的Swift代码

  22. 22

    任何人都可以解释为什么这代码连接,而不是增加的数值?

  23. 23

    任何人都可以解释待处理的意图及其参数

  24. 24

    任何人都可以在PHP中解释此数组声明-> $ a {0} =“ value”

  25. 25

    任何人都可以在此代码中解释javax.swing.SwingUtilities.invokeLater的使用

  26. 26

    任何人都可以解释这意味着什么

  27. 27

    任何人都可以向初学者解释什么是终端配置文件?

  28. 28

    java 任何人都可以解释这种类型的逻辑

  29. 29

    任何人都可以请解释我对我的反应 setState new

热门标签

归档