我想强制所有用户接受服务条款,就像这里描述的那样:
Ruby on Rails / Devise - Bypassing custom validation option in model when resetting password
然而,有2个要求使上述方法不适合。
1)用户不是自行注册的,而是由系统管理员创建的。管理员显然不能代表用户接受条款和条件。应提示用户在首次登录时接受条款和条件。
2)如果条款和条件事后发生变化。用户需要在后续登录时重新接受新条款。
这些似乎是非常标准的工作流程。设计是否提供了实现此目的的任何方法?
如果没有,我认为这个检查需要在我的应用程序控制器上的before_filter中实现。 (感觉与应用程序逻辑的脏混合认证...)
我是否必须诉诸于此,或者任何人都可以建议更好的方法吗?
由于
答案 0 :(得分:3)
这不是设计可以处理的,并且设计不应该处理这个因为TOS与认证无关。
你可以做的就是实现状态机,但可能比你需要的更复杂。
简单的方法是将一个accepted_tos布尔字段添加到您的用户模型中并将其绑定到before_filter中,然后每次更新TOS时都将accepted_tos设置为false。
答案 1 :(得分:-1)
理论上你不能禁止在你的应用程序中使用JQuery进一步移动吗?
禁用表单“继续”或“登录”按钮,直到他们选中一个框或点击继续按钮,然后启用登录按钮。
如果您需要存储该信息,只需在用户的数据库中创建一个列,当他们选中复选框或点击“继续”按钮时也会发布,或者您甚至可以使用登录计数作为会心。
如果user.logs> 0然后用户已经接受了这些条款 如果user.logs == 0,则用户需要在登录前接受这些条款。
我想根据你的问题,似乎将所有内容都绑定到Devise的声音过于复杂。
希望这有帮助。