如何选择所有唯一属性

时间:2011-09-26 18:57:16

标签: ruby-on-rails

我想查找具有唯一电子邮件地址的所有记录。我正在尝试执行此操作:

@uniq_referrals = []
CardReferral.all.select{|a| @uniq_referrals << a.email}
@referral_count = @uniq_referrals.uniq.each{|a|CardReferral.find_by_email(a)}

但我想一次性完成。这可能吗?

2 个答案:

答案 0 :(得分:2)

您可以使用:

CardReferral.select("distinct(email), other_field_you_need")

其中other_field_you_need是您需要从ActiveRecord获取的对象中使用的字段名称列表。

要获取您可以使用的唯一电子邮件记录的计数:

CardReferral.count("distinct(email)")

答案 1 :(得分:0)

我想查找具有唯一电子邮件地址的所有记录。我正在尝试执行此操作:

@uniq_referrals = []
CardReferral.all.select{|a| @uniq_referrals << a.email}
@referral_count = @uniq_referrals.uniq.each{|a|CardReferral.find_by_email(a)}

但我想一次性完成。这可能吗?

我认为这会对你有所帮助:

Model.group("email")

当我们通过电子邮件ID对所有记录进行分组时,您将找到所有具有uniq电子邮件的记录。如果某个记录具有相同的ID,那么您将获得第一个记录。

enter image description here

请选择图像以获得更多理解。 如果你还没有,那么我会详细解释。