2016-05-14 58 views
1

我們有一個用戶表。用戶有很多列表。八達通寶石根據shard_id爲相關模型動態選擇分片

我們想分割關聯模型列出所有用戶停留在數據庫「主」分片上。用戶將得到一個shard_id列,列表將被拆分成不同的數據庫「shard1」,「shard2」。

我們可以增加我們的代碼來訪問使用using方法正確碎片的清單:

Listing.where(user: current_user).using(current_user.shard_id) 

當然,這是一個很大的代碼更改。理想情況下,我們希望用我們現有的關聯語句像這樣只保留:

current_user.listings 

,並自動使用current_user.shard_id引擎蓋下方。

對此有何建議?

回答

0

根據文檔,current_user.listings應該開箱即用。

八達通還處理協會。當你試圖獲取關聯到另一個對象的對象,你可以使用普通的ActiveRecord的語法來獲取對象

+0

,只有當CURRENT_USER和上市都在同碎片的工作。如果用戶位於主分片並且列表位於Shard1上,則不起作用。 current_user將假定該關聯與current_user在同一個分片上。 – Homan