module RecordingsArchiveHelper ArchivePaths = Struct.new(:index, :update, :destroy, :publish_youtube, :back, keyword_init: true) def recordings_archive_paths(club, namespace:) case namespace when :admin ArchivePaths.new( index: admin_club_recordings_path(club), update: ->(rec) { admin_club_recording_path(club, rec) }, destroy: ->(rec) { admin_club_recording_path(club, rec) }, publish_youtube: ->(rec) { publish_youtube_admin_club_recording_path(club, rec) }, back: admin_club_path(club) ) else ArchivePaths.new( index: public_club_recordings_path(club), update: ->(rec) { public_club_recording_path(club, rec) }, destroy: ->(rec) { public_club_recording_path(club, rec) }, publish_youtube: ->(rec) { public_club_recording_publish_youtube_path(club, rec) }, back: public_club_path(club) ) end end end