哈希参数[:id] before_Action

时间:2018-10-08 14:09:40

标签: ruby-on-rails

我有一条路线,ID的值是加密的,这意味着在调用该动作之前必须先对其进行解密,我的问题是我如何获取ID,对其进行解密并将新的ID设置为该路线一个before_action过滤器,下面是我尝试过的 控制器:

before_action :reverse_id, only: :public_download

def reverse_id 
  @swapped_id = params[:id]
  @id = ScatterSwap.reverse_hash(@swapped_id).to_i
  params[:id] = @id

end

def public_download
  //do something
end

这是我的路线

get "get_score/:id/", to: "controller_name#public_download", as:       :get_score

1 个答案:

答案 0 :(得分:1)

  

此代码无效。我在网址中输入了相同的ID,而不是解密后的值

幸运的是,您根本不需要变异参数。为什么不简单地将MyModel.find(params[:id])替换为MyModel.find(decrypt(params[:id]))? (其中decrypt方法仅这样做,解密)