2011-03-08 46 views
0

我有一個Ruby on Rails應用程序下面的情況:重構和解耦Rails控制器:他們可以互相調用嗎?

  • 用戶填寫表單(註釋),得到看到一個omniauth頁面,在這裏,她可以選擇的身份驗證方法(OpenID的,Twitter,Facebook和喜歡)。
  • omniauth在用戶返回成功時填入,獲取會話並處理初始表單數據(發佈評論)。

我所有的工作,除了我有我的邏輯蔓延,我認爲,一個醜陋的方式; SessionsController現在創建對成功驗證的評論。

什麼是解耦這樣的事情的好方法? Comment模塊應該鉤入(偵聽)SessionsController嗎?或者,SessionsController只需調用CommentsControllerComment類中的某些方法來保存對成功驗證的評論?是否有任何我可以熟悉的模式,解決這些問題?

回答

0

我不認爲從另一個控制器調用一個控制器,如果控制器之間共享功能使用繼承或模塊,這不一定是好習慣。爲了您的具體問題,我會怎麼做:

  1. 未認證用戶帖子到/評論/前過濾器檢查認證創造
  2. A和存儲評論PARAMS哈希和成功然後重定向到會話重定向位置/ session/new
  3. 成功驗證會話控制器後,會檢查params散列並在重定向到存儲路徑之前創建任何延遲模型。

如果你可以從另一個請求發送POST,但不幸的是你不能,那麼你需要把邏輯放在會話控制器中。

相關問題