【发布时间】:2015-10-27 19:54:31
【问题描述】:
目前我有一个包含 10,000 个用户的表,我想搜索这些用户。我还有另一个我已批准的 3 个用户表。我想让搜索结果只返回 9997 个用户。换句话说,如果我批准了某个用户,我不希望他们出现在搜索结果中。这是我到目前为止的代码:
approved_users = Approval.where(user_id: logged_in_user.id)
approved_user_ids = approved_users.map { |user| user.approved_user_id}
pre_search_results = User.find_by_sql("SELECT *
FROM users LEFT JOIN approvals
ON users.id = approvals.approved_user_id
WHERE name LIKE ? OR operator_id LIKE ?"
)
当我手动添加 3 个用户时,第一条语句 approved_users 返回:
id: 10, user_id: 39, approved_user_id: 37
id: 11, user_id: 39, approved_user_id: 35>,
id: 12, user_id: 39, approved_user_id: 41>
然后我让approved_user_ids 只给我上面语句的 id 部分,所以它返回这个:
[37, 35, 41]
现在,我希望pre_search_results 将其他 9997 个用户返回给我,并且我有上述声明。它目前没有返回任何内容。有什么想法可以做什么?
【问题讨论】:
标签: ruby-on-rails activerecord