ユーザーテーブルがあります。ユーザーには多くのリスティングがあります。Octopus gemは、shard_idに基づいて関連モデルのシャードを動的に選択します
私たちは、すべてのユーザーがデータベースの「マスター」シャードに留まるような関連付けモデルを破棄したいと考えています。ユーザーはshard_id列を取得し、リストは異なるデータベース "shard1"、 "shard2"に分割されます。
我々はusing
メソッドを使用して正しいシャード上のリストにアクセスするために我々のコードを強化することができます
Listing.where(user: current_user).using(current_user.shard_id)
をそれは大きなコード変更ですが。
current_user.listings
そして、それは自動的にボンネットの下にcurrent_user.shard_id
を使用してい:理想的には私たちは、このような当社の既存の関連文を使用して保存しておきたいです。
これにはどのような提案がありますか?
を取得するには、通常のActiveRecordの構文を使用することができます。ユーザーがマスターシャードにあり、リストがShard1にある場合は動作しません。 current_userは、関連付けがcurrent_userと同じシャード上にあると想定します。 – Homan