0

ActiveRecordがデータベースにクエリしてデータベーススキーマを認識するのはなぜですか? db/schema.rbを読むことはできませんか?データベースからスキーマを読み込む代わりに、Railsがschema.rbを使用するようにする

パフォーマンスにデータベースに接続できないSidekiqワーカーがいます。ジョブ自体はデータベースをまったく使用しません(少なくとも私はそうと思っていました)。

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

しかし、最初の行は実際にデータベースを呼び出します!

Railsにschema.rbを読み込ませる方法や、データベースなしでNotificationをインスタンス化する方法はありますか?

ActiveRecordから継承しない別のモデルを作成したくありません。私は同じモデルが必要です:データベースから、時にはRedisからロードされることもあります。

答えて

0

オブジェクトのRedisバージョンを表す別のオブジェクトを作成し、含まれているモジュールを使用してARバージョンとRedisバージョン間でメソッドを共有することができます。 ActiveRecord :: Baseインスタンスは、データベースなしで使用するようには設計されていません。