RESTful动作最佳实践

时间:2011-07-14 19:37:25

标签: ruby-on-rails rest

我已经在Rails 3中使用了RESTful User模型。我想根据从LDAP服务器查询的信息添加一个新选项来创建新用户。

我喜欢的建议是如何最好地做到这一点。这是我到目前为止所想到的,但我不知道它是否符合Rails最佳实践:

编辑User的资源路径以接受GET和POST到名为" import_ldap_user"的新视图。

导入LDAP用户然后呈现一个使用AJAX(POST到import_ldap_user)的表单,以允许访问者在LDAP中搜索人员。结果显示在页面上,如果可以接受,用户点击"创建"然后调用/ user / create。

为什么这对我来说很糟糕的部分原因是:

  1. 我需要将适当的@user发布到/ user / create,但我不确定我的AJAX调用是否可以生成正确的@user。
  2. 我不知道向RESTful用户路线添加新动词是不是一种不好的做法。
  3. 我不知道对import_ldap_users使用AJAX POST是否正确分离了关注点。
  4. 有什么想法吗?任何Rails完美主义者都对如何运作有意见吗?

1 个答案:

答案 0 :(得分:2)

发布到/ user / create的内容不是@user对象,而是其属性。一个脚手架创建动作可能会有类似于@user.new(params[:user])的东西,它只会拉出已发布的用户属性并基于此创建一个新对象。

即使您的AJAX调用没有以new方法处理的方式提供属性,您也可以简单地修改create以便操作帖子数据。

至于最佳实践,这绝对是我过去曾想过的,但我不知道是否有“正确”的答案。我认为有一个新的视图发布到create方法是完全可以接受的,如果你想严格遵循CRUD模式,你也可以创建一个新的控制器。

绝对是个好问题,如果有人有更好的答案,我很乐意听到。