Ruby on rails _操作前的哈希参数[:id]

Ruby on rails _操作前的哈希参数[:id],ruby-on-rails,Ruby On Rails,我有一个路由,id的值是加密的,这意味着在调用操作之前必须对其进行解密,我的问题是如何获取id,对其进行解密,并使用before_操作过滤器将新id设置为路由,下面是我尝试过的 控制器: 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,对其进行解密,并使用before_操作过滤器将新id设置为路由,下面是我尝试过的 控制器:

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
这个代码不起作用。我得到的id与我放入url的id相同,而不是解密后的值


幸运的是,您根本不需要变异参数。为什么不干脆用
MyModel.find(decrypt(params[:id]))替换
MyModel.find(decrypt(params[:id])
?(其中
decrypt
method只做这一点,decryption)

它不起作用吗?不,它不起作用,我得到的是我放在url中的相同id,而不是解密后的值有趣,但并不奇怪。幸运的是,您根本不需要变异参数。为什么不干脆用
MyModel.find(decrypt(params[:id]))替换
MyModel.find(decrypt(params[:id])
?(decrypt方法仅此而已,decryption)谢谢。你的建议奏效了!