RESTful Actions Best Practices - PullRequest
       0

RESTful Actions Best Practices

2 голосов
/ 14 июля 2011

У меня есть модель RESTful User, хорошо работающая в Rails 3. Я хотел бы добавить новую опцию для создания нового пользователя на основе информации, запрашиваемой с сервера LDAP.

Я хотел бы получить совет, как лучше всего это сделать. Вот что я придумал до сих пор, но я не знаю, соответствует ли это лучшим практикам Rails:

Отредактируйте путь ресурса пользователя, чтобы он мог принимать и GET, и POST, для нового представления с именем import_ldap_user.

Затем пользователь импорта LDAP представляет форму, которая использует AJAX (POSTing для import_ldap_user), чтобы позволить посетителю искать человека в LDAP. Результаты отображаются на странице и, если это приемлемо, пользователь нажимает кнопку «Создать», которая затем вызывает /user/create.

.

Часть того, почему это кажется мне плохим:

  1. Мне нужно отправить правильного @user в / user / create, но я не уверен, что мой вызов AJAX может создать правильного @ user.
  2. Я не знаю, является ли плохой практикой добавление нового глагола в маршрут RESTful Users.
  3. Не знаю, правильно ли использовать AJAX POST для import_ldap_users.

Есть идеи? Любые перфекционисты Rails имеют мнения о том, как это должно работать?

1 Ответ

2 голосов
/ 15 июля 2011

То, что публикуется в / user / create, это не объект @user, а его атрибуты. Действие создания в скаффолде, вероятно, будет иметь что-то похожее на @user.new(params[:user]), которое просто извлекает опубликованные пользовательские атрибуты и создает на их основе новый объект.

Даже если ваш вызов AJAX не предоставляет атрибуты способом, который может быть обработан методом new, вы можете просто изменить свой create так, чтобы он манипулировал почтовыми данными.

Что касается лучших практик, я определенно об этом думал в прошлом, но я не знаю, есть ли «правильный» ответ. Я думаю, что иметь новое представление о сообщениях в методе create вполне приемлемо. Вы также можете создать новый контроллер, если хотите строго следовать шаблону CRUD.

Определенно, хороший вопрос, и если у кого-то есть лучший ответ, я бы с удовольствием его услышал.

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