首页
/ randumb 项目技术文档

randumb 项目技术文档

2024-12-26 13:20:19作者:丁柯新Fawn

1. 安装指南

首先,您需要在您的Gemfile文件中添加以下代码来引入randumb库:

gem 'randumb'

接下来,执行以下命令来更新您的bundle:

bundle install

确保您的ActiveRecord版本不低于3.0.0,并且您的数据库支持SQLite、MySQL或Postgres/PostGIS。

2. 项目的使用说明

randumb是一个Ruby库,允许您轻松地从您的数据库中随机抽取记录。最简单的使用方式是将其作为ActiveRecord查询的一部分:

Artist.order_by_rand.first # 如果有Artist记录,则返回一个随机的Artist,否则返回nil
Artist.order_by_rand.limit(3).all # 返回一个包含三个随机Artist的数组
Artist.order_by_rand.limit(1).all # 返回一个包含一个随机Artist的数组

###randumb的工作原理

randumb实际上只是在您的查询中添加了一个额外的ORDER BY RANDOM()(对于MySQL则是RAND())。

3. 项目API使用文档

以下是randumb提供的一些高级使用方法:

加权随机排序

您可以使用order_by_rand_weighted方法来偏好某些记录。

例如,如果您想偏好评分较高的电影,并且您的Movie模型有一个数字类型的score字段,您可以使用以下方式:

Movie.order_by_rand_weighted(:score).first # 随机返回一个电影
Movie.order_by_rand_weighted(:score).limit(10).all # 返回一个最多包含10个电影的数组

种子随机性

如果您希望给随机性设定一个种子以便产生可预测的结果,您可以在randumb的任何方法中提供一个可选的整数种子:

Artist.order_by_rand(seed: 123).limit(2) # 两次调用将返回相同的两个Artist
Artist.order_by_rand(seed: 123).limit(2)

随机ID洗牌

还有一些方法允许您使用randumb的早期算法进行随机记录选择。请注意,使用此方法时无法应用加权,并且limit/orders的行为也会有所不同。

# 返回视图数最高的100个Artist中随机选取的5个
artists = Artist.limit(100).order("view_count DESC").random_by_id_shuffle(5)

4. 项目安装方式

项目的安装方式已在安装指南中详细描述。您需要通过Gemfile添加randumb依赖,然后执行bundle安装命令。请确保您的ActiveRecord和数据库支持与randumb兼容。

登录后查看全文
热门项目推荐

项目优选

收起
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
53
468
kernelkernel
deepin linux kernel
C
22
5
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
878
517
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
336
1.1 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
180
264
cjoycjoy
一个高性能、可扩展、轻量、省心的仓颉Web框架。Rest, 宏路由,Json, 中间件,参数绑定与校验,文件上传下载,MCP......
Cangjie
87
14
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.08 K
0
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
349
381
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
612
60