10

我想强制所有用户接受服务条款,就像这里描述的一样:

Ruby on Rails / Devise - 重置密码时绕过模型中的自定义验证选项

但是,有两个要求使上述方法不适合。

1) 用户不是自行注册的,而是由系统管理员创建的。管理员显然不能代表用户接受条款和条件。应提示用户在首次登录时接受条款和条件。

2) 如果条款和条件事后发生变化。用户需要在后续登录时重新接受新条款。

这些似乎是非常标准的工作流程。设计是否提供任何方法来实现这一点?

如果没有,我认为这个检查需要在我的应用程序控制器上的 before_filter 中实现。(感觉将身份验证与应用程序逻辑混合在一起很脏......)

我是否必须诉诸于此,或者有人可以提出更好的方法吗?

谢谢

4

2 回答 2

3

这不是设计可以处理的,设计也不应该处理,因为 TOS 与身份验证无关。

你可以做的是实现一个状态机,但这可能比你需要的更复杂。

简单的方法是在您的用户模型中添加一个accepted_tos 布尔字段并将其绑定到一个before_filter,然后您将在每次更新TOS 时将accepted_tos 设置为false。

于 2012-05-24T02:14:54.040 回答
-1

难道你不能在理论上禁止使用 JQuery 在你的应用程序中进一步移动吗?

禁用您的表单“继续”或“登录”按钮,直到他们选中一个框或点击继续按钮,然后启用您的登录按钮。

如果您需要存储该信息,只需在用户的数据库中创建一个列,当他们选中框或点击继续按钮时也会发布该列,或者您甚至可以利用登录次数作为一种了解方式。

如果 user.logs > 0 则用户已经接受了条款。
如果 user.logs == 0 则用户需要在登录前接受条款。

我想根据您的问题,将所有内容都绑定到 Devise 听起来过于复杂。

希望这可以帮助。

于 2012-05-23T21:04:08.670 回答