Where 子句 rails -- 使用两个模型

Where clause rails -- using two Models

不确定执行此操作的最佳方法 - 我有一个 where 子句,我需要使用两个模型才能获得自动完成的列表结果。我有一个 'Membership' 模型,其中包含 'User' 引用或 'Member' 引用(user_id 为 nil 或 member_id 为 nil,但不能同时包含两者).

我需要列出 current_user 的用户名和成员名,如果不是 nil 则分别选择 user_id 或 member_id。

我试图在 where 子句中添加一个 && 但它似乎不起作用

 User.where(id:  current_user.memberships.pluck(&:user_id)) && Member.where(id: current_user.memberships.pluck(&:member_id)

我怎样才能使它工作并使其成为 Railsy?

这应该能满足您的需求:

current_memberships = current_user.memberships
user_names = User.where('users.id in ?', current_memberships.pluck(:user_id).compact.uniq)
                 .select('users.name')
                 .map(&:name)
member_names = Member.where('members.id in ?', current_memberships.pluck(:member_id).compact.uniq)
                     .select('members.name')
                     .map(&:name)

# concat the array of user names and member names
user_names + member_names