在rails视图中设置'limits'

时间:2011-02-11 02:10:53

标签: ruby-on-rails ruby

应用程序的用户可以拥有三种不同帐户类型之一。我们称之为小,中,大

我正在尝试找出根据帐户类型设置限制的最佳方法。我查看了cancan,但似乎只有基本的身份验证选项,如阅读,管理等,而我主要是做以下事情:

if user_has_hit_upload_limit?
  # display a message
else
  # display the upload form

最好的方法是什么?我认为cancan对此不是很理想吗?

我开始创建一个模型类来设置所有限制并执行所有检查,然后向ApplicationHelper添加方法来调用该类,而该类又由视图调用。

这看起来合理还是不合适?还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

CanCan用于基于为用户定义的能力的授权。对于像您描述的配额类型系统,它可能不是您想要的。假设您在用户模型中跟踪当前使用情况和用户配额,您可以编写如下帮助:

def user_has_hit_upload_limit?
  current_user && current_user.upload_count < current_user.upload_limit
end

困难的部分实际上是跟踪使用情况,这取决于您在应用程序中尝试执行的操作。

你仍然可以使用CanCan来定义一个具有阻止条件的能力,但恕我直言,它比实际需要的更复杂。