使Rails使用schema.rb而不是从数据库中读取模式

时间:2016-09-10 17:16:44

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

为什么ActiveRecord会查询数据库以了解数据库架构?它不能简单地阅读db/schema.rb

我有一些Sidekiq工作人员,因为性能无法连接到数据库。作业本身根本不使用数据库(或至少我预期如此):

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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