URLで使用されている識別子を意味のある文字列に変更するなど、ActiveAdminを使用するRailsサイトを変更しています。ActiveAdminのルートIDの制約を変更するにはどうすればよいですか?
ActiveAdminの外では、各モデルのto_param
メソッドを変更するだけで十分でした。これにより、ActiveAdminページのリンク用に生成されたURLも変更されましたが、新しいURLに対応するActiveAdminモデルを取得して、this answerで説明したActiveAdminの登録を変更する必要がありました。
このサイトのモデルの1つは、意味のある識別子のいくつかにドット/ピリオドを使用しています。 (これは私が変更できるものではありません)。拡張機能に基づくフォーマットの認識は、これらのレコードに問題を引き起こします。 ActiveAdminの外では、これらの問題は、this answerで説明されているように、ルート上のID制約を変更することで解決できます。残念ながら、非ActiveAdminルートの制約を変更しても、ActiveAdminルートには何の影響もありません。 this answerに記載されているように、ActiveAdminルートを(ActiveAdmin.routes(self)
のみに依存するのではなく)手動で指定することは可能ですが、非ActiveAdminルートに対しても同じ制約が適用されるようにする方法はありませんでした。
ドットを含めることができるようにActiveAdminルートのIDの制約を変更するにはどうすればよいですか?ここで
は、ルーティングが権利を取得2つの試みがあるが、ドットできるように失敗:
get "/admin/motors/:id", id: /[^\/]+/, controller: "admin/motors", action: "show"
get "/admin/motors/:id", constraints: { :id => /[^\/]+/ }, controller: "admin/motors", action: "show"