ですから、私は同僚との激しい宗教的議論から抜け出しました。
オブジェクトモデルとroutes.rbがあります。
resources :orgs do
resources :lists do
resources :posts do
resources :replies
end
end
end
これらの関係はすべて1対多です。つまり、リストは常に正確に1つの組織に属し、投稿は常に正確に1つのリストに属します。マルチネストルートに対する一般的な嫌悪感を十分に認識していますが、意識的にこの方向に進んでください。
残念ながら、これは、返信の編集にリンクする場合は、次のように記述する必要があることを意味します。
edit_org_list_post_reply_path( reply.post.list.org, reply.post.list, reply.list, reply )
とてもばかげています。
私は次のようなことができるようになりたいです:
fast_path( action: :edit, model: reply, type: :path )
返信は1つの投稿にのみ属し、1つのリストに属するなど、残りの部分を解決するために使用します。何かのようなもの:
def fast_path options
action = options[:action]
model = options[:model]
path_or_url = options[:type]
model_fields = {
reply: [:org, :list, :post]
post: [:org, :list],
list: [:org]
}[model.class.name]
arguments = model_fields.map { |field| model.send(field) } + [model]
named_route_name = model_fields.join("_") + "_" + path_or_url
named_route_name = action + "_" + named_route_name if action
send(named_route_name, arguments)
end
これが機能するか、特に優れたコードであるかは確認していませんが。
ただし、私の同僚は以前にこのようなことを行ったことがあります。そこでは、電話をかけやすくするために、多くの名前付きルートを上書きしました。彼は、それが悲惨、絶望、苦痛に他ならないことを主張し、今回はそのような試みを私たちのコードから遠ざけるために歯と釘と戦っています。
私は間違っていることをとても嬉しく思いますので、あなたの考えを教えてください!