这是我到目前为止:
myArray.map!{ rand(max) }
Run Code Online (Sandbox Code Playgroud)
然而,显然,有时候列表中的数字并不是唯一的.如何确保我的列表只包含唯一的数字,而不必创建一个更大的列表,然后我从中选择n个唯一的数字?
编辑:
我真的很想看到这个完成w/o循环 - 如果可能的话.
如何修复此代码,以便以小写形式生成唯一的随机字母和数字?
api_string = (0...32).map{65.+(rand(25)).chr}.join
Run Code Online (Sandbox Code Playgroud)
目前,它只生成字母.
我们已经看到了当您使用简单的"heroku create"将应用程序部署到Heroku时自动分配的有趣子域.
一些例子:炽热薄雾4652,电动夜-4641,晨霜-5543,辐射河-7322,等等.
它们似乎都遵循形容词 - 名词 - 4数字模式(大多数情况下).他们只是输入了一些形容词和名词的字典,然后在推送应用程序时随机选择它们的组合吗?是否有一个Ruby gem可以实现这一点,也许提供了一个可以通过词性搜索的字典,或者这是手动完成的事情?
或者是生成随机和唯一用户名所必需的外部gem?
这是我目前的工厂:
factory :user_4 do
sequence(:id) { |n| n }
sequence(:first_name) { |n| "Gemini" + n.to_s }
sequence(:last_name) { |n| "Pollux" + n.to_s }
sequence(:profile_name) { |n| "GeminiPollux" + n.to_s }
sequence(:email) { |n| "geminipollus" + n.to_s + "@hotmail.co.uk" }
end
Run Code Online (Sandbox Code Playgroud)
使用序列方法适用于id,profile_name和email,但我的REGEX验证意味着名字和姓氏自动无效,因为它们中有一个数字.与独特性无关.
那么我该如何创建这些独特的名字呢?
在创建给定的ActiveRecord模型对象的实例时,我需要生成一个短的(6-8个字符)唯一字符串,用作URL中的标识符,采用Instagram的照片URL样式(如http://instagram.com/ p/P541i4ErdL /,我刚刚加入404)或Youtube的视频网址(如http://www.youtube.com/watch?v=oHg5SJYRHA0).
这样做的最佳方法是什么?最简单的方法是重复创建一个随机字符串,直到它是唯一的?有没有办法散列/随机播放整数id,以便用户不能通过更改一个字符来破解URL(就像我上面的404'd Instagram链接那样)并最终获得新记录?
在Python语言中,我发现rstr可以为正则表达式模式生成一个字符串.
或者在Python中我们有这个方法可以返回字符串的范围:
re.sre_parse.parse(pattern)
#..... ('range', (97, 122)) ....
Run Code Online (Sandbox Code Playgroud)
但在Ruby中我没有找到任何东西.
那么如何在Ruby(反向正则表达式)中为正则表达式模式生成字符串?
我想要这样的事情:
"/[a-z0-9]+/".example
#tvvd
"/[a-z0-9]+/".example
#yt
"/[a-z0-9]+/".example
#bgdf6
"/[a-z0-9]+/".example
#564fb
Run Code Online (Sandbox Code Playgroud)
"/ [a-z0-9] + /"是我的输入.输出必须是我的正则表达式模式中可用的正确字符串.这里的输出是:tvvd,yt,bgdf6,564fb, "example"方法生成它们.我需要那种方法.
谢谢你的建议.
我有一个Ruby on Rails应用程序,您可以在其中创建"帖子".我开始使用脚手架生成器来生成标题,这是一个字符串,而主体是内容.
每个'post'都有一个id的url,例如/ 1,/ 2,/ 3等.
有没有办法将其更改为一串随机字符,例如/ 49sl,/ l9sl等?
这就是我所拥有的 posts_controller.rb
class PostsController < ApplicationController
# GET /posts
# GET /posts.json
def index
@posts = Post.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @posts }
end
end
# GET /posts/1
# GET /posts/1.json
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @post }
end
end
# GET /posts/new
# GET /posts/new.json
def new
@post = Post.new
respond_to do …Run Code Online (Sandbox Code Playgroud) 我需要生成一个唯一的六位数字数字代码.要在我的数据库中保存为凭证号码:对于每笔交易.
我怎么能只生成含有n个字符的伪随机字符串A-Z,0-9像SecureRandom.base64没有"+","/"和"="?例如:
(0..n).map {(('1'..'9').to_a + ('A'..'Z').to_a)[rand(36)]}.join
Run Code Online (Sandbox Code Playgroud) ruby ×9
random ×2
activerecord ×1
alphanumeric ×1
factory-bot ×1
heroku ×1
linguistics ×1
postgresql ×1
regex ×1
sinatra ×1
string ×1
subdomain ×1