我有一个多租户的rails应用程序。它具有帐户,客户和交易的资源。一个帐户有很多客户有很多交易。我想确保我永远不会意外地执行Client.find,Transaction.find等(所有内容都必须通过the_account.clients.find或client.transactions.find等)。我想这样做,所以我不会忘记首先选择帐户,从错误的帐户中不小心显示错误的用户信息。
有没有办法禁用Client.find(Client.find_by_name,Client.find_by_etc)但仍允许the_account.clients.find?
答案 0 :(得分:0)
我不知道完全禁用Client.find,但我可能会在我的每个Client和Transaction控制器的底部放置一个方法来处理查找。以下是客户端代码的样子:
def collection
if current_user.admin?
Client.all
else
current_user.account.clients
end
end
然后,在我的控制器的每个地方,我通常会使用Client.find
,我会替换collection
。获取所有正确的记录,没有过度曝光的风险。