Rails (Ruby 1.9.3) プロジェクトでacts_as_tggable_on gemを使用しています。リソースのリスト (クライアントとしましょう) に 1..n タグを追加するためのフォームを管理者に提供します。
これを一括で行う方法が見つかりませんでした。現在、すべてのクライアントでループして、タグを 1 つ追加してオブジェクトを保存しています。これは、X千のクライアントで試しているときにサーバーに大きな損害を与え、最終的にタイムアウトを作成します.
タグを ActiveRecord コレクションなどに適用する方法があるかどうか疑問に思っていました。これが文書化されている場合は、申し訳ありませんが、誰かがそれを行っている場所を見つけることができません。
自分でカスタム SQL クエリを実行してハッキングする方法はわかりますが、このように gem をハッキングするのは避けたいと思います。
今、私はこのようなことをしています
このようなもの
# Client.selection returns a clients collection
Client.selection.each do |client|
tags_to_add.each{|a| client.tag_list << a}
tags_to_remove.each{|a| client.tag_list.remove(a)}
client.save
end
お時間をいただきありがとうございます。
おまけ: コレクションから 1..n タグも削除できるようにする必要があります。