列的活动关系唯一性

时间:2014-05-03 12:20:46

标签: ruby-on-rails ruby ruby-on-rails-3

所以我有积极的关系,如:

[[id:1, post_id: 10, user_id:2][id:2, post_id:11, user_id:2]]

当我说relation.uniq时,它不返回一个值,因为对象的id是不同的(这是明显的行为)。

我如何只获取唯一对象,但不是完整字段,而只是某些特定字段,例如(:user_id)

我尝试使用distinct,但这只返回字段数组,而不是活动关系或对象

结果,我想得到一个活跃的关系,其中,字段user_id将是唯一的

虽然我不确定这是不是一个好主意,但也许我应该使用其他一些方法来得到我想要的东西,因为我开始明白,这不是最好的主意

2 个答案:

答案 0 :(得分:1)

使用pluck

Model.distinct.pluck(:user_id)

示例:

Person.pluck(:id)
# SELECT people.id FROM people
# => [1, 2, 3]

Client.distinct.pluck(:role)
# SELECT DISTINCT role FROM clients
# => ['admin', 'member', 'guest']

答案 1 :(得分:1)

你是如何使用distinct的?我跑的时候

> Model.select('DISTINCT column')

它似乎返回了类ActiveRecord::Relation的对象。