gpt4 book ai didi

ruby-on-rails - 使用 Active Record 查询模型 'select' 和 'where' 的数组结果

转载 作者:行者123 更新时间:2023-12-03 23:32:40 25 4
gpt4 key购买 nike

我有一个用户、成员和组模型。一个用户有许多成员资格,并通过成员资格进行分组。一个组有许多成员资格,而用户则通过成员资格。成员(member)资格属于两者。

当用户访问用户索引 View 时,我想向他/她显示属于他/她所属组的所有用户:我创建了以下代码,但它不起作用。我似乎无法让查询工作。请帮忙!

用户 Controller 中的代码

class UsersController < ApplicationController

def index
@users = current_user.relevant_members
end

end

用户模型中的代码

def relevant_members
group_ids = self.group_ids
user_ids = Membership.select("user_id").where("group_id IN (#{group_ids.join(", ")})")
User.find(user_ids)
end

不明白为什么,在控制台测试的时候,user_ids不是一个id数组,而是下面这个数组:

[#<Membership user_id: 2>, #<Membership user_id: 2>, #<Membership user_id: 3>, #<Membership user_id: 3>, #<Membership user_id: 3>, #<Membership user_id: 2>]

返回一组用户 ID 以查找所有相关组成员的更好方法是什么?

最佳答案

Membership.select("user_id").where("group_id IN (#{group_ids.join(", ")})")

总是返回一个成员对象数组,select("user_id") 只更改从数据库加载到对象的字段。

映射到id就够了

user_ids = Membership.select("user_id").where("group_id IN (#{group_ids.join(", ")})").map(&:user_id)

关于ruby-on-rails - 使用 Active Record 查询模型 'select' 和 'where' 的数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7913557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com