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

使用--skip-active-record后rails g model/scaffold无法生成模型求助

问题根源分析

你遇到的问题核心在于当初创建应用时使用了--skip-active-record参数,这个参数会让Rails彻底跳过Active Record框架的初始化配置——哪怕你后来手动在Gemfile里添加了activerecord gem,Rails的生成器(generator)依然不会识别Active Record相关的生成逻辑,所以执行rails g model或rails g scaffold时,模型文件(比如app/models/article.rb)不会被创建。

解决步骤

1. 确保Active Record被加载到应用中

打开config/application.rb文件,找到class Application < Rails::Application这段代码,确保Active Record的railtie被正确加载:

require_relative "boot"

require "rails/all"
# 保险起见单独声明加载Active Record(rails/all已包含,但避免被跳过)
require "active_record/railtie"

Bundler.require(*Rails.groups)

module YourAppName
  class Application < Rails::Application
    # 确保默认配置加载(如果之前被跳过需添加)
    config.load_defaults 6.0
    # 其他应用配置...
  end
end

2. 生成数据库配置文件

--skip-active-record会跳过config/database.yml的生成,你需要手动生成这个核心配置文件,在终端执行:

rails generate active_record:install

这个命令会创建config/database.yml,同时生成db/migrate目录(如果不存在的话)。

3. 完成数据库初始化

先执行bundle安装确保依赖正确加载:

bundle install

然后根据配置创建数据库(你的Gemfile已配置sqlite3,直接执行即可):

rails db:create

4. 重新生成模型/Scaffold

现在可以重新执行生成命令,注意模型名称要用单数(Rails遵循约定优于配置,单数名称会自动映射到复数表名):

rails g scaffold Article title:string text:string

这次会正常生成app/models/article.rb模型文件,同时生成对应的迁移、控制器、视图等内容。

额外小提示

如果之前已经用scaffold生成了控制器、视图等内容,可以选择删除这些文件后重新生成,或者执行生成命令时加上--force参数覆盖已有文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:07:51