自定义url_for表示非滚动ID

时间:2015-02-18 23:11:37

标签: ruby-on-rails ruby-on-rails-4

现在,如果我为模型秀动作创建一个URL,我只需调用:

link_to model_instance

创建类似这样的东西,当时模型是User并且id是1:

/user/1

我喜欢自定义该行为,而无需遍历代码库中生成此类模型的URL的所有实例。改变背后的动机是避免在URL中滚动id,让任何人通过简单地增加id来发现其他条目。像

这样的东西
/user/88x11bc1200

我是否可以简单地覆盖所选模型的URL生成方式?我正在使用RoR 4.x

1 个答案:

答案 0 :(得分:1)

您必须更新两个地方。

在模型中

class User < ActiveRecord::Base
  # Override the to_param method
  def to_param
    # Whatever your field is called
    non_rolling_id
  end
end

在控制器中

class UsersController < ApplicationController
  def show
    # Can't use `find` anymore, but will still come over as `id`
    @user = User.find_by_non_rolling_id(params[:id])
  end
end