设计,要求用户接受服务条款?

时间:2012-05-08 13:29:26

标签: ruby-on-rails ruby-on-rails-3 authentication devise

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

Ruby on Rails / Devise - Bypassing custom validation option in model when resetting password

然而,有2个要求使上述方法不适合。

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

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

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

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

我是否必须诉诸于此,或者任何人都可以建议更好的方法吗?

由于

2 个答案:

答案 0 :(得分:3)

这不是设计可以处理的,并且设计不应该处理这个因为TOS与认证无关。

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

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

答案 1 :(得分:-1)

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

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

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

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

我想根据你的问题,似乎将所有内容都绑定到Devise的声音过于复杂。

希望这有帮助。