Ruby on rails Rails 5,关注点-它们可以引用数据库表吗?

Ruby on rails Rails 5,关注点-它们可以引用数据库表吗?,ruby-on-rails,ruby,separation-of-concerns,activesupport-concern,Ruby On Rails,Ruby,Separation Of Concerns,Activesupport Concern,我正在努力学习关注点 我能找到的大多数博客文章和示例都是在将模型中定义的类方法移动到公共存储库的上下文中讨论它们的。我理解那部分 我不明白是否可以使用关注点来减少关联模型的设置。例如,我有一个用户模型和一个组织模型。每个用户和组织都有一个地址 若地址是一个模型,那个么它将是多态的,并且属于可寻址的。然后用户和组织将各有一个地址 我正在努力了解我是否能够解决一个问题,然后将其包括在我的用户和组织模型中。如果是这样的话,数据库中还能有一个名为address的表吗?如果没有名为address的模型(如

我正在努力学习关注点

我能找到的大多数博客文章和示例都是在将模型中定义的类方法移动到公共存储库的上下文中讨论它们的。我理解那部分

我不明白是否可以使用关注点来减少关联模型的设置。例如,我有一个用户模型和一个组织模型。每个用户和组织都有一个地址

若地址是一个模型,那个么它将是多态的,并且属于可寻址的。然后用户和组织将各有一个地址


我正在努力了解我是否能够解决一个问题,然后将其包括在我的用户和组织模型中。如果是这样的话,数据库中还能有一个名为address的表吗?如果没有名为address的模型(如果我使用models文件夹中的concerns子文件夹来定义address,则不需要该模型),我不清楚是否可以使用db表。

是的,您当然可以这样做,这是很常见的。您仍然需要数据库中的
地址
模型和
地址

它看起来像这样:

#您的用户模型(由用户表支持)
类用户<应用程序记录
包括可寻址
结束
#您的组织模式(由组织表支持)
班级组织<申请记录
包括可寻址
结束
#您的地址模型(由地址表支持)
类地址<应用程序记录
属于:可寻址,多态:真,触摸:真
结束
#干涸用户和组织之间共享关系的担忧
模块可寻址
扩展ActiveSupport::关注点
包括做
has_one:address,as::addressable,dependent::destroy
结束
结束

是的,你当然可以这样做,而且这很常见。您仍然需要数据库中的
地址
模型和
地址

它看起来像这样:

#您的用户模型(由用户表支持)
类用户<应用程序记录
包括可寻址
结束
#您的组织模式(由组织表支持)
班级组织<申请记录
包括可寻址
结束
#您的地址模型(由地址表支持)
类地址<应用程序记录
属于:可寻址,多态:真,触摸:真
结束
#干涸用户和组织之间共享关系的担忧
模块可寻址
扩展ActiveSupport::关注点
包括做
has_one:address,as::addressable,dependent::destroy
结束
结束

如果您需要访问db表,而不是关心它,您可能应该创建模型。人们担心的是减少这个类不应该承担的额外责任。例如,假设您有一个模型类:
Product
,现在您需要为数据库中的所有产品创建CSV导出功能。一种方法是在产品类中扩展此功能,或者创建一个单独的关注点类来处理它。关注在SOLID中是“S”,这意味着你的班级应该只处理一项责任。如果您以后需要xls/json导出怎么办?好的,谢谢。如果您需要访问db表,而不是关心它,您可能应该创建模型。人们担心的是减少这个类不应该承担的额外责任。例如,假设您有一个模型类:
Product
,现在您需要为数据库中的所有产品创建CSV导出功能。一种方法是在产品类中扩展此功能,或者创建一个单独的关注点类来处理它。关注在SOLID中是“S”,这意味着你的班级应该只处理一项责任。如果以后需要导出xls/json呢?好的,谢谢。