You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zeitwerk与Rails:Domains::Article类目录结构及autoload_path疑问

解决方案

正确的目录结构

把你的领域逻辑文件直接放在app/domains目录下,删掉多余的嵌套domains子目录,最终结构是:

app/
  domains/
    article.rb

article.rb里的类定义保持不变:

class Domains::Article
  # 你的领域逻辑代码
end

配置自动加载路径

打开项目的config/application.rb,把app/domains添加到Rails的自动加载路径里:

module YourAppName
  class Application < Rails::Application
    # 保留原有配置,新增下面这行
    config.autoload_paths << Rails.root.join('app', 'domains')

    # 如果你用的是Rails 6及以上版本(默认用Zeitwerk加载器),更推荐这么写:
    # Rails.autoloaders.main.push_dir(Rails.root.join('app', 'domains'))
  end
end

为什么这么做

Rails的自动加载机制是按类名的命名空间匹配目录结构的:Domains::Article这个类,Rails会自动去domains/article.rb路径找文件。所以只要把文件放在app/domains/article.rb,同时让Rails能扫描到app/domains目录,就能正常加载类,完全没必要搞重复的app/domains/domains嵌套结构。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:44:58