2011-07-14 55 views
2

我有一個RESTful用戶模型在Rails 3中運行良好。我想添加一個新選項來基於從LDAP服務器查詢的信息創建一個新用戶。RESTful Actions最佳實踐

我想要的建議是如何最好地做到這一點。這是我迄今爲止想到的,但我不知道它是否符合Rails最佳實踐:

編輯用戶的資源路徑,以同時接受名爲「import_ldap_user」的新視圖的GET和POST。

導入LDAP用戶然後提供一個使用AJAX(POSTing到import_ldap_user)的表單,以允許訪問者在LDAP中搜索一個人。結果顯示在頁面上,如果可以接受,用戶點擊「Create」,然後調用/ user/create。

爲什麼這似乎對我不好

部分是:

  1. 我需要發佈一個適當的@user到/用戶/創建,但我不知道如果我的AJAX調用可以產生一個適當的@user 。
  2. 我不知道將新動詞添加到RESTful Users路由是否是不好的做法。
  3. 我不知道如果使用AJAX POST導入_ldap_users是一個適當的問題分離。

任何想法?任何Rails完美主義者都有關於這應該如何工作的意見?

回答

2

發佈到/ user/create的內容不是@user對象,而是它的屬性。一個腳手架創建動作可能會有類似於@user.new(params[:user]),它只是拉動發佈的用戶屬性,並基於此創建一個新的對象。

即使您的AJAX調用沒有以可由new方法處理的方式提供屬性,您也可以簡單地修改您的create,以便它可以處理髮布數據。

至於最佳實踐,這絕對是我以前想過的事情,但我不知道是否有「正確的」答案。我認爲有一個新的視圖可以發佈到create方法是完全可以接受的,如果你想嚴格遵循CRUD模式,你也可以創建一個新的控制器。

絕對是個好問題,如果有人有更好的答案,我很樂意聽到它。