在 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 可以说更好地防止依赖循环。