J'ai un tableau d'objets rails de liste d'utilisateurs et un autre tableau d'objets de liste de team_users

Je veux afficher la liste des utilisateurs qui ne sont pas dans team_users mais je ne sais pas comment s'y prendre.

Dans mon code

User.where("users.user_account_type IS NULL or users.user_account_type = 'standard_user'").joins(:user_organizations).where("user_organizations.organization_id = ? AND users.approved = true AND users.locked_at IS NULL", 13)

Ce code me renvoie une liste d'utilisateurs

@team_members = TeamMember.all

Cela me renvoie tous les utilisateurs qui sont dans team_members. Cette table a team_member_id comme clé étrangère pour user.id dans la table User.

User.where("users.user_account_type IS NULL or users.user_account_type = 'standard_user'").joins(:user_organizations).where("user_organizations.organization_id = ? AND users.approved = true AND users.locked_at IS NULL", 13).joins(:team_members).where("team_members.team_member_id != users.id")

J'ai essayé d'utiliser ce code mais cela ne fonctionne pas. il ne renvoie aucun enregistrement.

Toute aide est appréciée

0
Kingsley Simon 28 déc. 2015 à 15:21

2 réponses

Meilleure réponse

Quelque chose comme ça devrait fonctionner:

in_teams = TeamMember.select(:team_member_id)
users_without_team = User.where.not(id: in_teams)

Vous pouvez également utiliser des hachages au lieu de chaînes pour la lisibilité:

Users.joins(:user_organization).where(approved: true, locked_at: nil, user_organizations: {organization_id: 13})
0
santuxus 28 déc. 2015 à 14:02

Je ne suis pas sûr de ce que vous voulez exactement mais cela ne renvoie que les utilisateurs qui n'ont pas le type de compte team_users.

User.All.Where(x=>x.Users.user_account_type !="team_users")
0
miron123 28 déc. 2015 à 12:38