应用程序的用户可以拥有三种不同帐户类型之一。我们称之为小,中,大
我正在尝试找出根据帐户类型设置限制的最佳方法。我查看了cancan,但似乎只有基本的身份验证选项,如阅读,管理等,而我主要是做以下事情:
if user_has_hit_upload_limit?
# display a message
else
# display the upload form
最好的方法是什么?我认为cancan对此不是很理想吗?
我开始创建一个模型类来设置所有限制并执行所有检查,然后向ApplicationHelper添加方法来调用该类,而该类又由视图调用。
这看起来合理还是不合适?还有更好的方法吗?
答案 0 :(得分:1)
CanCan用于基于为用户定义的能力的授权。对于像您描述的配额类型系统,它可能不是您想要的。假设您在用户模型中跟踪当前使用情况和用户配额,您可以编写如下帮助:
def user_has_hit_upload_limit?
current_user && current_user.upload_count < current_user.upload_limit
end
困难的部分实际上是跟踪使用情况,这取决于您在应用程序中尝试执行的操作。
你仍然可以使用CanCan来定义一个具有阻止条件的能力,但恕我直言,它比实际需要的更复杂。