查找后没有使用主键
要提取一定的岗位在我的控制器,你可以在URL查找后没有使用主键
http://0.0.0.0:3000/post/1
http://0.0.0.0:3000/post/2
http://0.0.0.0:3000/post/3
我被要求做,以便它不能获取这种类型是这样的方式,但随机字符串。例如更多的东西是这样的:
http://0.0.0.0:3000/post/wr4t-d2e2-1ee3
http://0.0.0.0:3000/post/prst-3r4t-1r1r
http://0.0.0.0:3000/post/asdo-2e12-sxas
问题 为了做到这一点,我应该创造职位表中的另一列称为“令牌”或“随机”,并使用该列通过find_by获取后?即Post.find_by_token('wr4t-d2e2-1ee3')
关于什么是正确的方式来处理这个问题的任何意见。 我已经在示例,其中应用程序将使用“代理键”,“全局唯一标识符”,“自然键”,令牌,随机
读了,我只是有点不知所措最佳实践是什么。
你所寻找的是这样的:
class Post < ActiveRecord::Base
# Permalinks
#-----------------------------------------------------------------------------
def to_param
"#{post.token}"
end
end
网址将会像
post_url(@post)
#http://0.0.0.0:3000/post/wr4t-d2e2-1ee3
然后,你可以做按正常
Post.find(params[:id])
可以生成你的令牌只需使用before_validation回调。
OR
你可以去宝石和使用friendly_id,将您处理该问题,以及产生该蛞蝓的轨迹史。 Th,听起来像是它可能是为了你的要求矫枉过正。
你可能想检查friendly_id宝石。 https://github.com/norman/friendly_id。
RailsCast:http://railscasts.com/episodes/314-pretty-urls-with-friendlyid
您将需要一个token
列,如果你使用的设计,可以与Devise.friendly_token
方法产生。
我认为这个gem会有帮助。谢谢。 – alenm 2012-02-09 05:48:39
我不认为有什么使用的最佳实践有明确的答案。就我个人而言,我会寻找与你的服务相关的东西:UPC,Isbn,强调博客文章标题等等,重要的细节将为该专栏编制索引。其他人做了什么。 – Ilion 2012-02-09 02:44:50
让我们猜猜,你有一个多租户系统,不希望用户看到其他租户发帖编号 – 2012-02-09 04:15:33
是的,客户不希望这些帖子是如此易于理解和可预测。 (即1,2,3,4,5)以逻辑顺序排列。 – alenm 2012-02-09 05:50:27