Не-CRUD Действия контроллера - PullRequest
5 голосов
/ 12 октября 2009

Это может показаться вопросом n00b, но я пытаюсь сломать некоторые из моих плохих практик, которые я, возможно, применил, используя MVC, поэтому я надеюсь, что вы можете помочь мне

Итак, представьте, что я хочу сделать что-то вроде «Загрузить CSV и разобрать его», для меня неочевидно вписать это в шаблон CRUD ... Я не взаимодействую с БД, поэтому я Мне не нужно добавлять, обновлять или удалять, но я все же хочу иметь возможность использовать действие осмысленно из разных представлений. Таким образом, это нормально для действия, называемого «UploadCSV», и сделать его доступным через URL, такой как «/ data / uploadcsv»

Ваши мысли очень ценятся!

Tom

Ответы [ 3 ]

1 голос
/ 12 октября 2009

Похоже, вы говорите о идеях RESTful (действия, называемые индексом, созданием, созданием, созданием, редактированием, обновлением, уничтожением, отображением).

В MVC вы можете вызывать действие в основном как угодно (так что да, вы можете называть его uploadcsv, если хотите). Если вы хотите, чтобы он соответствовал принципам RESTful, вы можете подумать о том, что делает действие (например, выгрузка данных, по сути, функция create или update) и назвать его, используя одно из имен действия RESTful.

0 голосов
/ 12 октября 2009

Полагаю, у меня такая же точка зрения, как и у вас.

В своих проектах я стараюсь быть максимально спокойным, когда могу. Однако, как вы сказали, особый случай просто «не подходит»

В конце концов, это также вопрос «чувства» Если вы предоставляете функцию импорта в CSV-файл, я считаю совершенно правильным не создавать полную реализацию REST для CSV.

Давайте представим, что в вашем приложении есть клиенты. И вы хотите дать возможность клиентам импортировать данные с помощью CSV. Вы можете добавить маршрут для этого действия, используя:

map.resources :clients, :member => { :uploadcsv => :get }

Маршрут правильно объявлен, ресурс ваших клиентов полностью восстановлен, и у вас есть дополнительное действие, правильно объявленное для управления импортом данных.

Единственное предупреждение, которое я имею: не используйте маршрут, подобный этому, "/ data / uploadcsv". С моей точки зрения не хватает ясности. Мне нравится быть в состоянии понять, что собирается делать мое приложение, просто посмотрев на URL. А '/ data' для меня слишком расплывчато:)

0 голосов
/ 12 октября 2009

Постоянство ресурса здесь не имеет решающего значения. Я предполагаю, что то, что вы делаете здесь, - это создание какого-то ресурса (хотя и не постоянного) из предоставленного csv. Здесь нужно подумать о том, что представляет собой этот CSV-файл. Что внутри? Это что-то, что станет набором ресурсов в вашей системе, или это представление только одного объекта в вашей системе? Если вы думаете об этом, то должно быть чем-то конкретным. Можете ли вы более подробно рассказать о проблемном домене?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...