0

在 Rails 6.1 中使用 Zeitwerk,我有一个可以调用的引擎Users

module Users
  class Engine < ::Rails::Engine
  end
end

一个用户有很多:blog_posts,但模型BlogPost是在主应用程序中定义的。

既然如此,最好的做法是:

A.定义模型内的关系

module Users
  class User < ApplicationRecord
    has_many :blog_posts
  end
end

或者B.将这种关系定义为主应用程序中的装饰器?

Rails.configuration.to_prepare do
  module UserAddons
    def self.included(base)  
      base.has_many :blog_posts
    end
  end
end

我的部分理解是,由于 Zeitwerk,选项 A 会很好,因为自动加载器会将所有内容移动到主应用程序的根目录。但是,我听说选项 B 可以说更好地防止依赖循环。

4

0 回答 0