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

运行Ruby Mongoid代码出现uninitialized constant NameError错误如何解决

问题排查与解决步骤

1. 加载Bundler管理的依赖

直接运行ruby populate_database.rb不会自动加载Gemfile中声明的依赖,导致Mongoid未被引入,触发未初始化常量的报错。
你可以二选一解决:

  • 在populate_database.rb的最开头添加两行代码,手动加载Bundler依赖:
require 'bundler/setup'
Bundler.require(:default)
  • 运行脚本时添加bundle exec前缀,由Bundler自动加载依赖:
bundle exec ruby populate_database.rb

2. 补充Mongoid数据库连接配置

你还没有为Mongoid配置MongoDB的连接信息,需要在引入search_term模型前添加连接配置:

Mongoid.configure do |config|
  config.clients.default = {
    # 替换为你本地MongoDB的连接地址、自定义数据库名
    uri: "mongodb://localhost:27017/business_db"
  }
end

3. 修复文档保存方法的错误

你当前代码中使用的s_term.post不是Mongoid的文档保存方法,需要替换为正确的save方法,建议加!后缀可以抛出保存异常,方便排查问题:

s_term.save!

4. 完整修复后代码示例

修改后的populate_database.rb完整代码如下:

require 'bundler/setup'
Bundler.require(:default)

# Mongodb连接配置
Mongoid.configure do |config|
  config.clients.default = {
    uri: "mongodb://localhost:27017/business_db"
  }
end

require_relative 'search_term'

business_list = [
  'business name 1',
  'business name 2',
  'business name 3',
  'business name 4',
]

business_list.each do |business|
  s_term = SearchTerm.new
  s_term.search_term = business
  s_term.save!
end

运行上述代码后,即可在MongoDB Compass对应数据库的search_terms集合中查看到写入的文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:24:00