ruby on rails-自定义宁静路线的最佳实践



在我的web应用程序中,我有一个典型的电子邮件用户激活过程。

目前,我对激活过程中的每一步都有一个自定义的控制器操作,即我有一个或多或少简单地呈现"注册"页面的操作"激活",然后我有另一个"激活"操作,它是注册页面上实际表单的目标操作。

我想知道这是不是最好的做法?-现在,我即将实现管理员启动的密码重置(管理员单击特定用户的密码重置链接,用户会收到一封电子邮件,其中包含一个可以设置新密码的页面链接)。我会更进一步,再添加3个控制器操作(一个用于发送重置电子邮件,一个用于访问重置页面的用户,以及一个用于实际重置表单的操作)。

这似乎让我的控制器有点乱,我想知道这是否是"正确"的方法?

任何建议的thx

您所做的一切都很好-不需要使控制器操作符合RESTful操作。REST应该只在适合您的模型的情况下使用,但您不应该试图使您的模型符合RESTful架构,除非它使交互更容易和直观。

不过,最好将这些自定义操作放入它们自己的控制器中,而不是UsersController中。一旦你觉得你的控制器太拥挤了,把一些动作转移到单独的模块或控制器中可能是个好主意。

class RegistrationController
  def activate # perform the activation
    ..
  end
  def activation # show the activation page
    ...
  end
end
class PasswordController
  def send # send the email
  end
  def resetter # show the page to reset the password
  end
  def reset # actually reset the password
  end
end

这些控制器操作可以通过自定义路由而不是资源来访问。

match 'register/activation' => 'registration#activation'
post 'register/activate' => 'registration#activate'
post 'password/send' => 'password#send'
match 'password/resetter' => 'password#resetter'
post 'password/reset' => 'password#reset'

相关内容

  • 没有找到相关文章

最新更新