Итак, я создаю приложение, использующее Rails 4 и Apartment Gem.Ограничение учетной записи приложения для нескольких пользователей по количеству пользователей
Я довольно новичок в многопользовательской работе и дошел до того, что я строю планы пользователей.
У меня есть 4 основных плана, и я хочу, чтобы каждый план ограничивал число пользователей, которые могут быть созданы, прежде чем сообщать владельцу учетной записи или администратору, что им необходимо обновить для регистрации новых пользователей.
Я думаю, что я больше застрял на том, где это должно быть сделано .. В моей модели счета у меня есть постоянная для плана:
PLAN = %w[responder first_responder patrol_pro guardian]
каждый из этих plan_types
(колонка Я спасаю, чтобы по знаку вверх) есть определенное количество пользователей, которые могут быть созданы, они также устанавливаются как константы ниже:
RESPONDER_PLAN_USER_LIMIT = 6
FIRST_RESPONDER_PLAN_USER_LIMIT = 12
PATROL_PRO_PLAN_USER_LIMIT = 30
GUARDIAN_PLAN_USER_LIMIT = 60
Я также создал следующие методы, чтобы проверить тип плана, однако это, кажется неуклюжим, и было интересно, если есть способ, я мог бы сделать это одним способом вместо 4
def responder_plan?
self.plan_type == 'responder'
end
def first_responder_plan?
self.plan_type == 'first_responder'
end
def patrol_pro_plan?
self.plan_type == 'patrol_pro'
end
def guardian_plan?
self.plan_type == 'guardian'
end
Теперь последний вопрос, на самом деле сосчитать пользователей, подключенных к счету я планировал на использовании валидатора, чтобы сделать это, я просто не-уверен, как создать метод модели.
Я думал, что-то вроде этого:
def over_user_limit?
self.individual_plan? && self.users.count > INDIVIDUAL_USER_LIMIT
end
, но я застрял на том, как сделать это с несколькими типами пользователей?
Любая помощь здесь была бы очень признательна.
EDIT 1: Сообщение об ошибке при попытке добавить перечисление в моей форме
SyntaxError at /accounts/new
syntax error, unexpected tIDENTIFIER, expecting ')'
first_responder: 12
^
/Users/developer/Desktop/PatrolVault-Saas/PV_SAAS/app/models/plan.rb:7: syntax error, unexpected ':', expecting keyword_end
patrol_pro: 30
^
/Users/developer/Desktop/PatrolVault-Saas/PV_SAAS/app/models/plan.rb:8: syntax error, unexpected ':', expecting keyword_end
guardian: 60
^
и для краткости, здесь моя полевая форма для него:
<%= f.fields_for :plan do |plan| %>
<div class="col-xs-12">
<%= f.select :plan_type, options_for_select(Plan.plan_types.map {|k, v| [k.humanize.capitalize, k]}) %>
</div>
<% end %>
EDIT # 2 Оставшееся сообщение об ошибке Ссылка на перечисление
Вот моя модель плана:
перечисление: plan_type, [: Ответчик,: first_responder,: patrol_pro,: хранитель]
USER_LIMITS = ActiveSupport :: HashWithIndifferentAccess.new ( Ответчик: 6, first_responder: 12, patrol_pro: 30, опекун: 60 )
Вот сообщение об ошибке:
И элемент формы не изменился.
Im собирается редактировать свой пост с им ошибка при получении с предложением .. –
Ах, извините, теперь я вижу, что это за ошибка, я просто скопировал ваши константы в USER_LIMITS и забыл добавить запятую после каждого. – max
нет, все еще есть проблема, связанная с переписью, которую он опубликовал. Теперь обновляется –