我需要在出入控制规则的基础上,找到一种对所发现的面积有利的解决办法。 基本上,我有以下机构:
Users Customers AccessControl - Defines which user has access to another users data
用户不仅需要能够接触自己的客户,而且还需要与其他用户共享客户。
很显然,像一个简单的协会这样的东西不会奏效:
has_many :customers
并且不会:
has_many :customers, :conditions => user_id in (1,2,3,4,5)
由于协会使用“范围”和“附加条件”是不是“或”条件。
此外,我还试图推翻这一发现和办法。
has_many :customers do
def find(*args)
#get the user_id and retrieve access conditions based on the id
#do a find based on the access conditions and passed args
end
def method_missing(*args)
#get the user_id and retrieve access conditions based on the id
#do a find based on the access conditions and passed args
end
end
但问题是,在推广方法中,我没有接触用户物体/母物体,而只是没有按计划工作。
我也尝试了违约——范围,但正如在座,然后你可以把一个障碍变成一个违约范围。
无论如何,我知道,在使用铁路之前就进行了数据分割和数据存取控制,并想知道有些人是否找到了这样做的有利途径。
UPDATE: The AccessControl table has the following layout
user_id
shared_user_id
客户表有这种结构:
id
account_id
user_id
first_name
last_name
将把以下数据列入“出入控制表”:
1 1
1 3
1 4
2 2
2 13
and so on...
用户1的账户为13个,我需要能够检索客户,最好用以下图表说明:
select * from customers where (account_id = 13 and user_id = null) or (user_id in (1,3,4))