【问题标题】:Rails 5 project without activerecord causing model generate errorRails 5项目没有activerecord导致模型生成错误
【发布时间】:2018-10-17 18:56:15
【问题描述】:

我在使用没有 ActiveRecord 的 Rails 5.2 的项目中遇到问题。

我已经运行了命令rails new project --skip-active-record 并且没问题,但是当我运行命令来生成模型时,我得到了这个错误:

.rvm/gems/ruby-2.5.1/gems/bundler-1.16.1/lib/bundler/rubygems_integration.rb:404:in replace_gem 中的“块(2 级)”:加载“sqlite3”活动时出错 记录适配器。缺少它所依赖的宝石? sqlite3 不是 捆绑。将其添加到您的 Gemfile。 (Gem::LoadError)

如果我禁用它并且我在互联网上搜索并没有找到任何人在谈论它,我不明白为什么它会询问活动记录中的 sqlite 3。

怎么了?

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby activerecord ruby-on-rails-5.2


    【解决方案1】:

    如果您不想使用ActiveRecord,则无需使用rails g 生成模型。 您只需转到应用程序中的 app/models 目录并创建一个普通的 ruby​​ 类来将其用作模型。

    【讨论】:

    • 所以,如果我想使用 RestClient gem 连接外部 API,我需要手动创建模型,对吗?因为创建模型 Rails 默认需要依赖数据库?
    • 我自己没有使用过RestClient gem,但是你总是可以自己创建一个模型。毕竟它只是一个类。如果它继承AR::Base,它也将具有与数据库表一起使用的功能。
    【解决方案2】:

    命令

    rails g model MODEL
    

    将生成模型、迁移和固定装置。这与 ORM 有关。所以 rails 会查看数据库配置。在那里你会提到 ORM 客户端

    adapter: sqlite3
    

    您需要为此安装 sqlite3 gem。添加

    gem 'sqlite3'
    

    到您的Gemfile

    如果您只想单独添加模型,请在 app/models 文件夹中创建文件。但是这样做有什么意义呢? Rails 将根据模型的 类名 查找 表名 并抛出错误

    【讨论】:

    • 我正在使用外部 REST JSon API 来处理数据,所以我需要手动创建模型,对吧?
    【解决方案3】:

    我假设您没有 ORM。如果是这种情况,那么running rails generate model 不应该做任何事情,它甚至不应该默认安装 sqlite。尝试更新你的 sqlite gem

    【讨论】:

      【解决方案4】:

      $ bin/rails generate model ... 命令实际上创建了一个迁移和一个 ActiveRecord 模型,这就是您收到与数据库相关的错误的原因。见Model Generators

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-12
        • 2016-09-29
        • 1970-01-01
        • 1970-01-01
        • 2012-02-18
        • 1970-01-01
        • 2020-09-04
        • 2015-07-15
        相关资源
        最近更新 更多