首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 3-不同的和随机的

Rails 3-不同的和随机的
EN

Stack Overflow用户
提问于 2010-10-22 15:35:42
回答 3查看 1.9K关注 0票数 1

我试着从属于我的用户的汽车中选择5个不同的品牌。我目前的尝试如下(没有随机选择的方法)。

代码语言:javascript
运行
复制
@range = @user.cars.select('DISTINCT brand_id').limit(5)

我如何随机选择这五个不同的品牌?非常感谢。

EN

回答 3

Stack Overflow用户

发布于 2010-10-22 17:54:09

虽然不是很优雅,但我可能会选择你所有不同的品牌,然后随机挑选5个。在这种情况下,我希望您的品牌列表不是很大,因此初始查询应该不会太昂贵。

代码语言:javascript
运行
复制
brands = @user.cars.select('DISTINCT brand_id')
selection = 5.times.map{ Random.new.rand(0..brands.size) } # Random requires Ruby 1.9.2+
@range = []
selection.each { |rec| @range << brands[rec] }

这是未经测试的代码,所以如果我误导了,很抱歉。

票数 0
EN

Stack Overflow用户

发布于 2011-07-27 22:14:45

问题中给出的代码选择了属于一个特定用户的五个汽车品牌。这是一个非常幸运的用户。

如果我们假设你试图从至少一个用户拥有的所有汽车中随机选择五个品牌,我认为你想要这样的东西:

代码语言:javascript
运行
复制
Car.select("DISTINCT cars.brand_id").order("RANDOM()").joins(:user).limit(5)

只要Car与用户有belong_to关系,就应该可以工作。

如果您真的想将范围限制为只有一个用户的汽车,那么您需要这样的东西:

代码语言:javascript
运行
复制
@user.cars.select("DISTINCT cars.brand_id").order("RANDOM()").limit(5)

无论如何,在mysql中,您需要"order(RAND())“而不是"order(RANDOM())”。

票数 0
EN

Stack Overflow用户

发布于 2012-05-02 02:14:54

这将帮助您挑选不同的记录

代码语言:javascript
运行
复制
@range = @user.cars.select('brand_id').uniq.limit(5)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3994766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档