Rails秘密URL

时间:2010-12-25 15:35:41

标签: ruby-on-rails ruby-on-rails-3

我正在尝试制作一个注册可选的Rails应用程序。为简单起见,让我们说它是一个pastebin(也可能是一个像URL缩短器一样)。我希望每个粘贴都可以从两个URL访问:一个具有只读访问权限,可以与其他人共享,另一个具有对粘贴原始创建者的编辑权限。

到目前为止,我已尝试通过在Paste模型中创建两个键来实现此目的: :show_id,:edit_id

我有一个在before_validation上运行的方法:on =>创建回调,为这些键生成这两个随机字符串。

我设置了一些路由,以便'/ s / show_id'和'/ e /:edit_id'转到相应的控制器。

现在我想让'resources'路由助手方法(例如:paste_path,edit_paste_path)指向这些URL,而不是默认值。但是,似乎我需要覆盖to_param方法来执行此操作,但我不确定如何正确输出:show_id或:edit_id。

1 个答案:

答案 0 :(得分:1)

覆盖to_param将不起作用,因为它假定记录具有单个标识符。我会尝试重新定义paste_path和edit_path_path。有点像...

module ApplicationHelper
  def paste_path(paste)
    "/s/#{paste.show_id}"
  end

  def edit_paste_path(paste)
    "/e/#{paste.edit_id}"
  end
end 

请注意,这只会处理最简单的用例。您可能希望在帮助程序中处理额外的选项,或者处理paste_url,或者处理诸如url_for([:edit,paste])之类的东西,但这是我开始的地方。