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
不确定执行此操作的最佳方法 - 我有一个 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