Создание хэша и использование to_param для обфускации идентификаторов - PullRequest
1 голос
/ 11 октября 2011

Я хотел бы иметь возможность скрыть идентификаторы объектов в моем приложении, чтобы URL можно было поделиться, но не так легко угадать.

Я понял, что мне нужно сохранить hashed_id в базе данных для объекта, и что может быть возможность переписать функцию to_param для использования этого hashed_id в URL, но яУ меня проблемы с получением его на работу.

модель:

  after_create :create_hashed_id

  def to_param
        self.hashed_id
  end

  def create_hashed_id
    self.update_attributes(:hashed_id => Digest::SHA1.hexdigest([Time.now, rand].join)[0,16])
  end

контроллер:

def show
    @upload = Upload.find_by_hashed_id(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @upload }
    end
  end

Объект создается с атрибутом hash_id, но когда я пытаюсь ивызовите метод show, который выглядит так, как будто он выглядит в столбце id вместо столбца hashed_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...