1

次のようなさまざまなタイプのユーザーを処理するために STI を使用する Rails アプリがあります。

class Admin < User
  ...
end

memcached を使用したいのですが、恐ろしい「unknown class/module」エラーが発生し続けます。すべての ActiveRecord モデルをプリロードしようとしましたが、役に立ちませんでした。最初のリクエストは通常​​どおり機能しますが、memcached からの最初のプルでエラーが発生します。私はこれらの指示に従っても役に立ちませんでした。

単一テーブルの継承で memcached を使用できますか?

4

3 に答える 3

1

これは、クラスの遅延読み込みが原因だと思います。memcachedから呼び出すと、クラス定義が読み込まれず、エラーが発生します。

私が使用する回避策は次のとおりです。

Admin #lazily load the class definition

# do whatever that has cached Admins
于 2009-01-14T14:46:25.320 に答える
0

問題は、前述の before_filter が実行される前に、restful_authentication の login_from_session メソッドがロードされていたことです。このメソッドの先頭で STI ユーザー クラスをプリロードすると、うまくいきました。

于 2009-01-14T15:14:27.977 に答える
0

ちょっとしたコメントですが、require_dependency 'admin' の使用が推奨されていることを読みましたが、理由はわかりません

require_dependency 'region'

また、追加する場合、これは不要であることがわかりました

config.cache_classes = true

production.rb (またはテスト用の development.rb) に追加すると、キャッシュ用のすべてのモデルがキャッチされるようです。

于 2009-06-23T19:15:28.967 に答える