如何将关联添加到模块?

Tomekfranek

如何在Rails中实现这种结构?

User
 has_one :health
Health
 belongs_to :user
 has_many :weights
 has_many :diseases

Health::Weight
 belongs_to :health
Health::Diseases
 belongs_to :health

users
 health_id:integer
healths
 id:integer
health_weights
 current:integer
 health_id:integer
health_diseases
 name:text
 health_id:integer

当我生成r g model Health::Weight current:integer我的Health是没有ActiveRecord的模块时:

module Health
  def self.table_name_prefix
    'health_'
  end
end

我这个好方法吗?

尼古巴

据我了解,您要达到的目标是这样的:

  1. 给定用户的健康状况可以具有许多健康特征(体重,疾病等)。

  2. 您想将与健康特征相对应的模型放在模块中,以将它们与应用程序的其他部分明确分开


实际上,这与使用Health :: Weight和Health :: Diseases一样使用“健康”模块是一个好案例。

但是,您不应使用称为“健康”的模型作为将用户链接到其健康特征的模型。

这首先导致语义上的混乱,但也无法在代码中工作:健康不能同时是ActiveRecord :: Base子类(或其他“ ORM类”)和封装其他表(如体重和疾病)的模块。


=>用更清晰的模型名称替换您的健康模型,该名称明确指出它是用户与其健康特征(体重,疾病等)之间的链接。例如UserHealthProfile。

最终结构将是:

    class User
      has_one :user_health_profile
    end

    class UserHealthProfile
      belongs_to :user
      has_one    :weight 
      has_many   :diseases
    end

    module Health
      def self.table_name_prefix
        'health_'
      end
    end       

    class Health::Weight
      belongs_to :user_health_profile
    end

    class Health::Disease
      belongs_to :user_health_profile
    end

您也可以将UserHealthProfile模型放入Health模块中,如下所示:

    class Health::UserHealthProfile
    end

注意:将模型封装到模块中时,在定义关联时可能需要添加class_name参数,但这取决于您的实际模块结构。

例子:

    # let's say UserHealthProfile doesn't belong to the Health module
    class UserHealthProfile
      belongs_to :user
      has_one    :weight,   class_name: Health::Weight
      has_many   :diseases, class_name: Health::Disease
    end    

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将模块添加到 nginx 包中

来自分类Dev

如何将样式模块添加到

来自分类Dev

如何将ARRAY作为键值对添加到关联数组

来自分类Dev

Active Record如何将记录添加到has_many:通过Rails中的关联

来自分类Dev

如何将关联值添加到已具有键的地图?

来自分类Dev

如何将文件类型添加到Windows 8“文件关联”?

来自分类Dev

如何将符合协议的不同类型和关联类型添加到集合中?

来自分类Dev

如何将git子模块添加到git repo中作为普通目录?

来自分类常见问题

如何将sqlite3模块添加到Python?

来自分类Dev

如何将监视模块添加到现有的Android Studio项目中?

来自分类Dev

如何将CastCompanionLibrary作为依赖项添加到我的Android Studio模块?

来自分类Dev

如何将内核模块添加到LTIB目标映像

来自分类Dev

如何将SAP B1 SystemForm添加到新模块中?

来自分类Dev

如何将样式表和jQuery添加到joomla 3.x模块

来自分类Dev

Visual Studio如何将Python模块添加到Intellisense

来自分类Dev

如何将Idea模块添加到Gradle的依赖项

来自分类Dev

如何将JavaScript模块添加到generator-meanjs应用程序?

来自分类Dev

如何将远程子模块添加到我的github项目中?

来自分类Dev

如何将Idea模块添加到Gradle的依赖项

来自分类Dev

如何将模块化bash脚本添加到`bin`中?

来自分类Dev

如何将“ TypeScript样式”的原型函数添加到外部模块?

来自分类Dev

如何将打字稿类型添加到导出类的 NPM 模块?

来自分类Dev

如何将模块添加到 VS 2017 Enterprise 中的项目?

来自分类Dev

如何将EF6关联添加到不是主键的候选键/唯一键?

来自分类Dev

如何将扩展方法添加到具有位于不同板条箱中的关联类型的特征?

来自分类Dev

如何将NPM模块(十进制)添加到ArangoDB中以进行ACID事务,然后

来自分类Dev

如何将 Perl DBI 模块的所有依赖项添加到 PAR 打包程序存档

来自分类Dev

Intellij Idea 如何将 maven 添加到现有的非标准布局模块?

来自分类Dev

将属性添加到数据存储后,如何将其添加到EntityType?

Related 相关文章

  1. 1

    如何将模块添加到 nginx 包中

  2. 2

    如何将样式模块添加到

  3. 3

    如何将ARRAY作为键值对添加到关联数组

  4. 4

    Active Record如何将记录添加到has_many:通过Rails中的关联

  5. 5

    如何将关联值添加到已具有键的地图?

  6. 6

    如何将文件类型添加到Windows 8“文件关联”?

  7. 7

    如何将符合协议的不同类型和关联类型添加到集合中?

  8. 8

    如何将git子模块添加到git repo中作为普通目录?

  9. 9

    如何将sqlite3模块添加到Python?

  10. 10

    如何将监视模块添加到现有的Android Studio项目中?

  11. 11

    如何将CastCompanionLibrary作为依赖项添加到我的Android Studio模块?

  12. 12

    如何将内核模块添加到LTIB目标映像

  13. 13

    如何将SAP B1 SystemForm添加到新模块中?

  14. 14

    如何将样式表和jQuery添加到joomla 3.x模块

  15. 15

    Visual Studio如何将Python模块添加到Intellisense

  16. 16

    如何将Idea模块添加到Gradle的依赖项

  17. 17

    如何将JavaScript模块添加到generator-meanjs应用程序?

  18. 18

    如何将远程子模块添加到我的github项目中?

  19. 19

    如何将Idea模块添加到Gradle的依赖项

  20. 20

    如何将模块化bash脚本添加到`bin`中?

  21. 21

    如何将“ TypeScript样式”的原型函数添加到外部模块?

  22. 22

    如何将打字稿类型添加到导出类的 NPM 模块?

  23. 23

    如何将模块添加到 VS 2017 Enterprise 中的项目?

  24. 24

    如何将EF6关联添加到不是主键的候选键/唯一键?

  25. 25

    如何将扩展方法添加到具有位于不同板条箱中的关联类型的特征?

  26. 26

    如何将NPM模块(十进制)添加到ArangoDB中以进行ACID事务,然后

  27. 27

    如何将 Perl DBI 模块的所有依赖项添加到 PAR 打包程序存档

  28. 28

    Intellij Idea 如何将 maven 添加到现有的非标准布局模块?

  29. 29

    将属性添加到数据存储后,如何将其添加到EntityType?

热门标签

归档