我有一个路由,id的值是加密的,这意味着在调用操作之前必须对其进行解密,我的问题是我如何获取id,解密它并使用before_action过滤器将新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(params[:id])
呢?(其中decrypt
方法只做解密(