私は自分のプロジェクトでacts-as-taggable-on gemを使用しています。ただし、すべてのタグをロードするには約 80 秒かかります。
run_controller に熱心な読み込みを追加しましたが、機能していません。コードの一部は次のとおりです。
def index
@runs = Measurement.includes(:tags).order( "run_name DESC" ).group( :run_name )#.descending #.order_by( :run => 'desc' )
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @runs }
end
end
act-as-taggable-on でサポートされている tag_list を使用してタグを表示しています。したがって、Measurements で熱心な読み込みを使用しても、パフォーマンスに影響はありません。次の 2 つは、スタックフローに関連する問題 です。 2.acts_as_taggable_on によるクエリの最適化
ログファイルを調べたところ、最も時間がかかるのはタグのロードであることがわかりました。
ActsAsTaggableOn::Tag Load (69.9ms) SELECT tags
.* FROM tags
INNER JOIN taggings
ON tags
. id
= taggings
. tag_id
どこtaggings
で。taggable_id
= 223866 およびtaggings
. taggable_type
= '測定' AND (taggings.context = 'tags' AND taggings.tagger_id IS NULL)
ActsAsTaggableOn::Tag Load (70.2ms) SELECT tags
.* FROM tags
INNER JOIN taggings
ON tags
. id
= taggings
. tag_id
どこtaggings
で。taggable_id
= 223854 およびtaggings
. taggable_type
= '測定' AND (taggings.context = 'タグ'
タグをロードするために何千ものクエリがあり、各クエリのコストは約 0.07 秒でした。これらの次のコードは、タグを表示するために使用しています。
= form_for (run), :remote => true, :method => :put, :html => { :class => "myform"} do |f|
=f.text_field :tag_list, :class => "tags"
何か助けはありますか?ありがとう。