2012-01-10 9 views
1

ElastiSearchに接続するためにRuby on TireでTireを使用しています。私はupdate_all()を実行するとタイヤ(elasticsearch)が更新されません

update_attributesで要素のパラメータを変更すると、この変更を反映するようにTireが自動的にインデックスを更新します。

しかし、update_allを実行して多くの要素を同時に変更すると、Tireはインデックスを更新せず、データベースと同期しなくなります。

これはTireのバグですか?回避策はありますか? ActiveRecord#update_all documentation 1として

+0

あなたはタイヤに関するgithubに関する問題を提出しましたか? Karmiは、それに対応し、可能な解決策についてブレーンストーミングすることについてかなり良いです。 –

答えて

2

は、彼らが供給される一連の条件と一致する場合、制限及び順序も供給することができ、所与の詳細をすべてのレコードを更新します。このメソッドは、単一のSQL UPDATE文を作成し、それをデータベースに直接送信します。関与するモデルをインスタンス化せず、アクティブレコードコールバックを起動しません。

のでコールバックはあなたがどちらかに持っている...

と呼ばれていないので、何も更新しませんタイヤ:

A)find_eachを使用して

saveメソッドを呼び出しますb)update_allを使用しますが、完全なインデックスを再作成してください。

+1

私は(a)あなたが望む機能がRailsオブジェクトを更新する必要があるように見えますが、まっすぐなSQL UPDATE呼び出しではないようです。再索引付け以外にも、オブジェクトに何か起こりたいことがあるかもしれません。 –

関連する問題