2013-01-30 7 views
1

У меня есть приложение Rails, которое имеет User, Role, Group моделей.Предварительный запрос в Rails 3

пользователя Модель

has_and_belongs_to_many :roles 
has_and_belongs_to_many :groups 

Role Model

has_and_belongs_to_many :users 

Group Модель

has_and_belongs_to_many :users 

Я также создал отображение таблиц, как,

roles_users и groups_users для отображения их идентификатор

Так вот каждый пользователь может иметь несколько групп ВЕННЫХ роли,

в моей роли модели есть только три записи,

admin с идентификатором 1, trainer с идентификатором 2, trainee с id 3

Я хочу найти всех пользователей под определенную группу с идентификатором роли = 3,

я сделал так,

@group = Group.find(2) 
@users = @group.users 

здесь я получаю все пользователь под группой id =2, но я хочу, чтобы отфильтровать его снова с ролью id = 3. Как это исправить.

Любая помощь приветствуется.

ответ

1

Try:

@group = Group.find(2) 
@users = @group.users.joins(:roles).where("roles.id = ? && users.age = ?",3,30) 
+0

Он отлично работает .... это возможно для меня, чтобы добавить больше условия здесь есть: Фильтр выше результата с возрастом = 30 в таблице пользователей. – Cyber

+0

да можно, я обновил ответ – shweta

+0

спасибо .... это работает .. – Cyber

0

Это должно работать @group.users.joins(:roles).where(roles: { id: 3 })

Смежные вопросы