1

私は最終的に、アクティブレコードのテーブルをクエリしていた問題を診断しました。Model.all で 1 つのクエリを実行する代わりに、それぞれを個別に呼び出していました。コメントアウトしたらバグ直った

  mount_uploader :image, ImageUploader
  mount_uploader :home_image, HomeImageUploader

何らかの理由で、mount_uploader が各クラス インスタンスを再度呼び出すため、クエリが遅くなります。誰かが同様の問題を抱えていましたか?私は追加するためにcarrierwave github docsで見ました

require 'carrierwave/orm/activerecord'

私のモデルクラスに参加しましたが、それは何の役にも立ちませんでした。また、carrierwave ドキュメントの「ORM をロードした後に CarrierWave をロードしていることを確認してください」という行について混乱しています。どんな提案でも大歓迎です、ありがとう。

4

2 に答える 2

2

最終的にバグを突き止めました。これらの余分なクエリはすべて、アップローダーで store_dir をセットアップする方法が原因で発生していました。

 "images/#{Rails.env}/#{model.class.to_s.underscore}/#{model.class.find(model.id).name}"

その名前を取得するためにモデルをロードし続けました。に変更しました

"images/#{Rails.env}/#{model.class.to_s.underscore}/#{model.id}"

そして、それは私のクエリの問題を解決しました。これが他の誰かに役立つことを願っています。

于 2012-07-25T04:47:40.540 に答える