Я использую rails3 с acl9 для авторизации.Я пытаюсь обмануть ARel и рельсовый способ запроса.
У меня есть Пользователь , принадлежащий Company , и пользователь имеет заданную роль (acl9 обеспечивает слесарное дело) над Company ,Как я могу получить всех пользователей от данной компании , которые играют определенную роль? Я хочу фильтровать результаты в БД , а не фильтровать их в приложении.
Я хочу что-то вроде этого:
#
# authorizable_id = 1 is the company's id
# 'collaborator' and '1' would be params for my scope
#
select * from users
inner join roles_users
on roles_users.user_id = users.id
inner join roles
on roles_users.role_id = roles.id
where roles.authorizable_type='Company'
and roles.authorizable_id = 1
and roles.name = 'collaborator';
#usage with scope
@collaborators = User.with_role_and_company('collaborator',current_user.company)
Я знаю, что у rails3 есть sqlapi, но я из Java / Grails, и большинство ORM, которые я использую, имеют некоторые API-интерфейсы ORM (я думаю, datamapper работает так, но я использую обычные rails3).