在 STI 表/建模模式中,如何具有所有类型共享的类型特定属性?

勒瓦·巴哈马德

我有一个设置,其中有多个模型继承自 Base 模型 - 标准单表继承:

class Parent < ActiveRecord::Base
end

class A < Parent
end

class B < Parent
end

我的 STI 设置正确且效果很好!但是,我想添加 :type 特定属性,例如描述。

例如,我希望所有 A 类型的 Parent 都有描述,“我是 A 类型的 Parent。我的功能是...”

我想避免一遍又一遍地复制数据(例如,让 A 的每个实例存储相同的描述)。

为此想到的第一件事是在子类上有一个特定于模型的方法。所以像:

class A < Parent

  def self.description
    "I am the A type of Parent. My function is for..."
  end

end

我不喜欢这个解决方案,因为这确实是关于特定类型的子类(而不是关于子类实例本身)的数据,并且您会遇到使这种行为(部署以更改数据等)带来的所有问题。

这是唯一的方法还是我没有看到的替代方法?

电话号码

为描述创建模型怎么样?

class Description < ActiveRecord::Base
  has_many :as
end

class A < Parent
  belongs_to :description

  before_save { description_id = 1 }
end

这样,您可以管理description数据库中的内容,并且可以通过 Web 界面或迁移对其进行修改。此外,您可以轻松地为不同的子类添加不同的描述,或者甚至在需要时根据实例更改它们。

这种方法的一个缺点是您需要使用正确的描述创建模型。一个潜在的解决方案可能是before_saveorbefore_create钩子,但我相信这些不是唯一的方法。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用STI迁移ActiveModel?

来自分类Dev

具有许多直通,自相关和多态的STI模型,保存STI父类名而不是STI子类名

来自分类Dev

取消固有STI模型的关联

来自分类Dev

包括有孩子的Rails STI父母

来自分类Dev

带有Rails和Devise的STI

来自分类Dev

具有ManyToOne关系的单表继承(STI)

来自分类Dev

访问关联类(STI)Rails 3的属性

来自分类Dev

Minitest:使用 STI 时表为空

来自分类Dev

(导轨)如何避开STI空字段?

来自分类Dev

Rails:关联的STI类中的循环依赖

来自分类Dev

Ember JS中的Rails STI和多态

来自分类Dev

Ember JS中的Rails STI和多态

来自分类Dev

具有Devise和STI的多个用户类型-密码更改问题

来自分类Dev

Rails STI使用基类查询所有子类

来自分类Dev

Ruby on Rails-具有STI查询的用户角色

来自分类Dev

具有STI的作用域的has_many超级慢

来自分类Dev

如何使用STI创建与现有模型相关的新模型?

来自分类Dev

无效的单表继承类型:尝试在Rails 4中设置STI子类时出错

来自分类Dev

Rails:这是单表继承(STI)的用例吗?

来自分类Dev

单表继承(STI)父ActiveRecord .subclasses .descendants返回空

来自分类Dev

太阳黑子宝石在 STI 表中使用

来自分类Dev

如何处理STI并自动建立相关模型?

来自分类Dev

Rails STI对于所有子类覆盖父类中的model_name

来自分类Dev

Rails STI:如何更改类名和“类型”列的值之间的映射

来自分类Dev

我应该如何在Rails 4.0中使用单表继承(STI)来处理“有很多通过”关系

来自分类Dev

Rails 4-Devise_scope,root用户不适用于多种类型的用户(STI)

来自分类Dev

每个父模型实例的每种类型的 RoR STI 单一

来自分类Dev

使用STI为Rails中的子模型指定唯一属性

来自分类Dev

如何使用STI将列添加到派生类中?

Related 相关文章

  1. 1

    如何使用STI迁移ActiveModel?

  2. 2

    具有许多直通,自相关和多态的STI模型,保存STI父类名而不是STI子类名

  3. 3

    取消固有STI模型的关联

  4. 4

    包括有孩子的Rails STI父母

  5. 5

    带有Rails和Devise的STI

  6. 6

    具有ManyToOne关系的单表继承(STI)

  7. 7

    访问关联类(STI)Rails 3的属性

  8. 8

    Minitest:使用 STI 时表为空

  9. 9

    (导轨)如何避开STI空字段?

  10. 10

    Rails:关联的STI类中的循环依赖

  11. 11

    Ember JS中的Rails STI和多态

  12. 12

    Ember JS中的Rails STI和多态

  13. 13

    具有Devise和STI的多个用户类型-密码更改问题

  14. 14

    Rails STI使用基类查询所有子类

  15. 15

    Ruby on Rails-具有STI查询的用户角色

  16. 16

    具有STI的作用域的has_many超级慢

  17. 17

    如何使用STI创建与现有模型相关的新模型?

  18. 18

    无效的单表继承类型:尝试在Rails 4中设置STI子类时出错

  19. 19

    Rails:这是单表继承(STI)的用例吗?

  20. 20

    单表继承(STI)父ActiveRecord .subclasses .descendants返回空

  21. 21

    太阳黑子宝石在 STI 表中使用

  22. 22

    如何处理STI并自动建立相关模型?

  23. 23

    Rails STI对于所有子类覆盖父类中的model_name

  24. 24

    Rails STI:如何更改类名和“类型”列的值之间的映射

  25. 25

    我应该如何在Rails 4.0中使用单表继承(STI)来处理“有很多通过”关系

  26. 26

    Rails 4-Devise_scope,root用户不适用于多种类型的用户(STI)

  27. 27

    每个父模型实例的每种类型的 RoR STI 单一

  28. 28

    使用STI为Rails中的子模型指定唯一属性

  29. 29

    如何使用STI将列添加到派生类中?

热门标签

归档