Rails订阅限制

时间:2010-06-17 17:40:04

标签: ruby-on-rails declarative-authorization

我有一个对订阅属性设置限制的应用程序i / e用户可以有五个项目用于订阅A但有十个用于订阅B

目前我在链接到创建操作时检查当前的使用情况,如果超出限制,我不会显示创建新项目的链接。在视图上(对于新项目),我再次运行检查(在帮助程序中)以查看它们是否可以创建新项目,如果不是,我会显示一条消息,说明如此以及一些升级链接。

这是一种阻止用户绕过订阅属性限制的安全方法吗?

直接PUT请求等等?

2 个答案:

答案 0 :(得分:1)

您还可以验证用户的订阅是否允许在创建新项目时启动新项目。这保证即使他们直接发布到new_project_path也会出错。

class Project

  belongs_to :user

  validate_on_create :subscription_allows_new_project

  def subscription_allows_new_project
    unless self.user.subscription.max_projects > self.user.projects.count
      errors.add_to_base("Project limit reached, please upgrade today!")
    end
  end

end

答案 1 :(得分:0)

如果你对put请求非常谨慎,你可以简单地创建一个你在所有页面中调用的辅助方法。

<% if has_user_hit_project_limits %>
Upgrade Now!
<% else %>
Add project
<% end %>

def has_user_hit_project_limits
    if #logic
        true
    else
        false
    end
end