[英]How to make a database appear partitioned by some columns with Active::Record
假設一列client_id在我們的數據庫中無處不在,並且對於給定的會話或請求,我們將一直處於客戶端的“上下文中”。
有沒有一種方法可以模擬將每個客戶端的數據存儲在單獨的數據庫中,同時將它們保留在同一表中以簡化數據庫管理? 我想要的類似於默認作用域,但是由於它會隨每個請求而變化,因此無法在加載時固定。
# invoices table data
# -------------------
# id client_id amount
# 1 1 100.00
# 2 2 100.00
with_client( Client.find(1) ) do
Invoices.all # finds only invoice 1
Invoices.find(2) # finds nothing or raises
end
如何使用ActiveRecord做到這一點,或者在什么時候可以通過手術改變AR以影響這種行為?
加分:我想防止此client_id列的更新-應該在創建時將其固定
class Client < ActiveRecord::Base
has_one :invoice, :dependent => :destroy
end
class Invoice < ActiveRecord::Base
belongs_to :client
end
In controller
@client= Client.find(1)
@client.invoice #finds id =1 client_id =1 amount=100.0
有一個展示在這里 ,討論多租戶應用程序。 它有一些有趣的想法來利用數據庫模式,特別是對於postgres。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.