Ограничения на подписку Rails - PullRequest
2 голосов
/ 17 июня 2010

У меня есть приложение с установленными ограничениями на атрибуты подписки, если пользователь может иметь пять проектов для подписки A, но десять для подписки B

В настоящее время я запускаю проверку текущего использования при связывании с действием создания, и если они превышают лимит, я не отображаю ссылку для создания нового проекта. В представлении (для нового проекта) я снова запускаю проверку (в помощнике), чтобы увидеть, могут ли они создать новый проект, и, если это не так, я отображаю сообщение об этом и небольшую ссылку для обновления.

Является ли это безопасным способом остановки пользователя в обход ограничений атрибута подписки?

А как насчет прямых запросов PUT и т. Д.

Ответы [ 2 ]

1 голос
/ 19 июня 2010

Вы также можете проверить, что подписка пользователя позволяет запускать новый проект при создании нового проекта.Это гарантирует, что даже если они отправят сообщение прямо в 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
0 голосов
/ 17 июня 2010

Если вы действительно осторожны с запросами на размещение, вы можете просто создать вспомогательный метод, который вы вызываете на всех страницах.

<% 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
...