Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails应用程序和会员访问选项的最佳方法_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails rails应用程序和会员访问选项的最佳方法

Ruby on rails rails应用程序和会员访问选项的最佳方法,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,我想看看这里的社区会建议什么样的最佳方法。我现在有了我的应用程序,其中用户有plan_id,因此plan_id=“1”将是试用版或免费版,plan_id=“2”将是订阅计划。现在我的控制器检查两件事,1)计划id是否为1或2。。。2.)如果在自由计划中,检查他们在DB中保存的帖子数量;3.)如果在自由计划中,检查他们拥有的类别 我想将我的用户限制在帖子和类别的数量上,如果他们达到这个限制,他们就必须订阅无限计划=计划2 现在我也在看Cancan或Easy_的角色,但就我而言,我不确定这是否可行

我想看看这里的社区会建议什么样的最佳方法。我现在有了我的应用程序,其中用户有plan_id,因此plan_id=“1”将是试用版或免费版,plan_id=“2”将是订阅计划。现在我的控制器检查两件事,1)计划id是否为1或2。。。2.)如果在自由计划中,检查他们在DB中保存的帖子数量;3.)如果在自由计划中,检查他们拥有的类别

我想将我的用户限制在帖子和类别的数量上,如果他们达到这个限制,他们就必须订阅无限计划=计划2

现在我也在看Cancan或Easy_的角色,但就我而言,我不确定这是否可行

我应该继续使用有效的解决方案,还是改变它并实施Cancan或Easy_角色?我在寻求建议


谢谢,

如果您愿意,您应该可以使用CanCan。设置它的方法是以以下方式定义这些能力(未经测试的代码,但您知道):

这样做的缺点是,当用户未经授权时,会引发一个通用异常,而您不知道引发该异常的原因。因此,在处理时,您必须再次检查:

rescue_from CanCan::AccessDenied do |exception|
  if user.plan_id == 1 and user.posts.count > X
    render 'too_many_posts'
  elsif user.plan_id == 1 and user.categories.count > Y
    render 'too_many_categories'
  else
    ...
  end
end
或在签入控制器时在消息中传递:

authorize! :create, Post, :message => "Unable to create so many posts"

谢谢你,这给了我一个更好的想法来使用CanCan。
authorize! :create, Post, :message => "Unable to create so many posts"