我需要为我的Topic模型生成一个随机网址(例如):
那我怎么能在rails中做到这一点?
注意:随机字符串必须包含数字,小写和大写字母。
提前感谢。
答案 0 :(得分:3)
这样的事可能
#config/routes.rb
match "/:random_id" => "topics#show", :constraints => {:random_id => /([a-zA-Z]|\d){3,6}/}
将随机字符串3-6个随机字母/数字匹配到您的主题控制器的show方法。确保在此匹配器上方声明其他资源,例如“http:// localhost:3000 / pies”将路由到Topics#show而不是Pies #index。
要为您的主题生成随机网址,您可以执行以下操作:
#app/models/topic.rb
before_create :generate_random_id
def generate_random_id
#generates a random hex string of length 6
random_id = SecureRandom.hex(3)
end
答案 1 :(得分:0)
Patricks答案应该有效 - 但它只涵盖路由传入的请求。 如果您仍在使用标准路线(例如topic_path)来创建链接,它仍将使用正常路线。
如果您运行rake路由,您应该看到使用random_id创建的路由的名称。 (您可能需要使用以下命名来命名:as =>'random_route')
如果你打电话给那而不是标准的topic_path,你应该得到你想要的路线