所以我正在寻找一种创建随机id的方法,该id将链接到大厅,当在rails中调用所显示的方法时将显示该大厅。截至目前,网址将如下所示:http://localhost:3000/lobby/2。我希望用随机生成的ID替换那个2,这样你就可以将这个链接发送给朋友,如果你想让他们加入你的大厅。有任何想法吗?
答案 0 :(得分:2)
正如加文所说,你应该分享更多信息。了解您已经尝试过的内容可以帮助我们为您提供更多/更好的信息。
我希望这能为您带来正确的方向。要生成随机ID,您可以使用 SecureRandom : http://ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html
我建议您在lobbies
表格中添加另一列,并使其唯一:
add_column :lobbies, :secure_token, :string, null: false
add_index :lobbies, :secure_token, unique: true
现在,在Lobby
模型中,无论何时创建,您都可以生成唯一标记。为简单起见,您可以按照以下方式执行操作:
class Lobby < ActiveRecord::Base
before_create :generate_unique_secure_token
# Rest of the model's code
private
def generate_unique_secure_token
begin
self.secure_token = SecureRandom.urlsafe_base64
end while self.class.exists?(secure_token: secure_token)
end
end
每次创建secure_token
时,这将生成Lobby
。现在,在控制器中,您可以使用secure_token
代替id
来查找Lobby
。例如:
class LobbiesController < ApplicationController
def show
@lobby = Lobby.find_by(secure_token: params[:id])
end
end
答案 1 :(得分:0)
我不会给你完整的答案,因为学习这些东西很棒,但如果你有任何问题,请随时问我!
这是您应该开始的地方:URLSafe Base 64
Here's a Railscasts episode与您想要的相似,看看您是否可以从那里扩展!如果您是Rails的新手,请务必查看Railscast。所有专业剧集都可以在youtube上免费获得!