假设一列client_id在我们的数据库中无处不在,并且对于给定的会话或请求,我们将在客户端的“上下文中”整个时间。如何使数据库看起来被Active :: Record的某些列分区
有没有一种方法来模拟将每个客户端的数据存储在单独的数据库中,同时将它们保留在同一个表中以实现更简单的数据库管理?我想要的与默认范围类似,但由于它会针对每个请求进行更改,因此无法在加载时进行修复。
# 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列的更新 - 它应该被固定在创建时
关于此场景的一些其他想法:http://www.linkedin.com/answers?viewQuestion=&queryID=698205&askerID=3854479 – 2010-07-09 20:48:25
这个其他堆栈溢出问题也非常相似:http://stackoverflow.com/questions/1603178/rails-best-practice-to-scope-queries-based-subdomain – 2010-07-09 20:50:40