我有一个应用程序,其中资源通过普通ID保存在数据库中。但是,为了防止数据库枚举,在路径和链接中向用户显示的ID类似于UUID。 (例如:http://example.com/payment/yta6Bo34s)
要在Phoenix + Ecto中创建基于身份的普通链接,可以执行以下操作:
link to: payment_path(@conn, :show, payment)
但是,这会隐式使用此处传递的.id
结构的%Payment{}
字段。
使用UUID时,必须执行
link to: payment_path(@conn, :show, payment.uuid)
或者,对于我的应用程序,UUID在数据库中保存为bigints,但显示为base36-strings:
link to: payment_path(@conn, :show, UUID.encode(payment.uuid))
有没有办法简化这个过程?例如,是否有一个协议可以实现传递给Phoenix路径助手的结构,因此它们会自动使用自定义过程来生成show / edit / update / delete路径?