如何从一个模型中获取唯一值并使用它们映射到另一个模型?

时间:2016-01-13 00:03:55

标签: ruby-on-rails activerecord

我有一个Message模型,它引用了许多带有user_id键的记录。如何仅为此键选取唯一值,然后将它们映射到id(user_id)为关键字的用户模型?

2 个答案:

答案 0 :(得分:0)

user_ids = Message.select('distinct(user_id)').map(&:user_id) 
messaged_users = User.where(id: user_ids)

答案 1 :(得分:0)

pluckselect效率更高。选择将返回关系对象并在映射时创建ruby对象。

user_ids = Message.pluck(:user_id) 
messaged_users = User.where(id: user_ids)