从对象列表中删除对象rails

时间:2015-12-28 12:21:29

标签: sql ruby-on-rails ruby-on-rails-4

我有一个用户列表的rails对象数组和另一个team_users列表的对象数组

我想显示不在team_users中但不确定如何进行操作的用户列表。

在我的代码中

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)

此代码返回给我一个用户列表

@team_members = TeamMember.all

这将返回team_members中所有用户。此表将team_member_id作为User表中user.id的外键。

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")

我尝试使用此代码,但它不起作用。它不返回任何记录。

感谢任何帮助

2 个答案:

答案 0 :(得分:0)

我不确定你想要什么,但这只返回没有team_users帐户typ的用户。

User.All.Where(x=>x.Users.user_account_type !="team_users")

答案 1 :(得分:0)

这样的事情应该有效:

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

另外,为了便于阅读,您可以使用哈希而不是字符串:

Users.joins(:user_organization).where(approved: true, locked_at: nil, user_organizations: {organization_id: 13})