Tag: base62

在Rails应用程序中混淆ID

我试图模糊离开服务器的所有ID,即ID出现在URL和HTML输出中。 我写了一个简单的Base62 lib,它有方法编码和解码。 定义或更好地覆盖ActiveRecord的id方法以返回id的编码版本,并调整控制器以使用解码的params[:id]加载资源,从而得到所需的结果。 现在,id在URL中编码为base62,响应显示正确的资源。 现在我开始注意到通过has_many关系定义的子资源没有加载。 例如,我有一个名为User的记录has_many Post s。 现在User.find(1).posts为空,尽管有些post的user_id = 1 。 我的解释是,ActiveRecord必须将Post的user_id与User的方法 id进行比较 – 我已经覆盖了 – 而不是与self[:id]进行比较。 所以基本上这使得我的方法毫无用处。 我想要的是在模型中定义obfuscates_id并且其余部分将被处理,即在适当的位置进行所有编码/解码并防止服务器返回id。 有没有可用的gem或有人有提示如何实现这一目标? 我敢打赌,我不是第一个尝试这个的人。