【问题标题】:Make Rails use schema.rb instead of reading the schema from the database让 Rails 使用 schema.rb 而不是从数据库中读取模式
【发布时间】:2016-09-10 17:16:43
【问题描述】:

为什么 ActiveRecord 查询数据库以了解数据库架构?不能简单的看db/schema.rb吗?

我有一些 Sidekiq 工作人员出于性能考虑无法连接到数据库。作业本身根本不使用数据库(或者至少我期望如此):

n = Notification.new
n.body = cache["body"] # cache is from Redis
...

但是第一行实际上调用了数据库!

我可以做些什么来让 Rails 读取 schema.rb,或者在任何情况下,在没有数据库的情况下实例化 Notification

我不想创建不继承自 ActiveRecord 的单独模型。我需要相同的模型:有时它是从数据库加载的,有时是从 Redis 加载的。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 rails-activerecord sidekiq


    【解决方案1】:

    您可以创建一个单独的对象来表示对象的 Redis 版本,并使用包含的模块在 AR 和 Redis 版本之间共享方法。 ActiveRecord::Base 实例不能在没有数据库的情况下使用。

    【讨论】:

      猜你喜欢
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-26
      相关资源
      最近更新 更多