1

我们的 Rails 应用程序中有useruser_level模型。里面有user_level一个字段叫user_group_id. 关系是userhas_many user_levels。我们想user_group_id为给定的(在 user_level 中)生成一个数组user_id

对于给定的 user_id,其 user_levels 可以检索为:

u = User.find(user_id)
ul = u.user_levels

user_levels一个可能有多个user。如何使用 ruby​​(或其他一些 ruby​​ 方法(首选 ruby​​))创建user_group_id一个ul数组map?谢谢。

4

2 回答 2

4

试试这个,

user = User.find(user_id)
user.user_levels.pluck(:user_group_id)

或这个,

user.user_levels.map(&:user_group_id)

第一个进行单独的数据库查询,仅选择:user_group_id. 例如,在 MySQL 中,它会调用SELECT user_levels.user_group_id ....

第二个:user_group_id从 fetched中收集user_levels

于 2013-03-11T22:39:10.787 回答
1

你确实在寻找map

user_group_ids = ul.map{|x| x.user_group_id}

或者用简写:

user_group_ids = ul.map(&:user_group_id)

您可能还希望只有不同的 id 而没有nils

user_group_ids = ul.map(&:user_group_id).uniq.compact
于 2013-03-11T22:39:47.873 回答