Rails 5、疑虑——他们能引用数据库吗table?

Rails 5, Concerns - can they reference a database table?

我正在尝试了解问题。

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

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

address如果是模型,就是多态的,属于可寻址的。然后用户和组织将各有一个地址。

我正在尝试了解是否可以解决问题,然后将其包含在我的用户和组织模型中。如果是这样,我还能在数据库中有一个名为 address 的 table 吗?我不清楚如果我没有名为 address 的模型是否可以拥有 db table(如果我使用 models 文件夹中的 concerns 子文件夹来定义地址,我就不需要它)。

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

看起来像这样:

# your user model (backed by users table)
class User < ApplicationRecord
   include Addressable
end

# your organisation model (backed by organisations table)
class Organisation < ApplicationRecord
  include Addressable
end

# your address model (backed by addresses table)
class Address < ApplicationRecord
  belongs_to :addressable, polymorphic: true, touch: true
end

# the concern to DRY up shared relation that both user adn organisation have
module Addressable
  extend ActiveSupport::Concern

  included do
    has_one :address, as: :addressable, dependent: :destroy
  end
end