Ограничить результаты поиска активной записи - PullRequest
0 голосов
/ 30 июля 2009

У меня есть таблица с сотрудниками (идентификатор, имя, роль) и боссы таблицы отношений (employee_id, superior_id; оба Foreign_keys для employee.id для сотрудников).

Теперь, если сотрудник входит в систему, я хочу показать только его / ее сотрудников; администратор (role = admin) может видеть всех сотрудников.

Для администратора это просто:

Employee.find(:all) #to list them
Employee.find(params[:id] #to find one

Есть ли простой способ ограничить результаты только для моих сотрудников?

Как добавить всегда условие

where employees.id in
 (select id from bosses where superior_id = #{User.current_user.employee})

если роль не является администратором.

Дополнительный комментарий

Не могли бы вы придумать более общее решение, когда каждый раз, когда вызывается метод find в активной записи, он проверяет current_user и возвращает только те элементы, которые он / она должен видеть?

Ответы [ 2 ]

2 голосов
/ 30 июля 2009

Возможно:

Employee.all(:joins => :bosses, :conditions => {:superior_id => User.current_user.employee})
0 голосов
/ 30 июля 2009

Вы можете сделать что-то вроде

@boss = Boss.find(params[:id], :include => [:employees])

За босса и его сотрудников. Тогда используйте

@boss.employees

чтобы получить сотрудников этого босса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...