2011-03-08 47 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,但不幸的是你不能,那么你需要把逻辑放在会话控制器中。

相关问题