我使用 Apartment Gem 在 Rails 4 中构建了一个多租户应用程序,这是一个基于订阅的应用程序,并通过计划类型限制用户数量。
我的计划模型中有以下验证(我将在此处粘贴整个内容),但我不确定如何验证此验证,以便管理员或所有者在帐户处于最大容量时无法邀请用户?
计划.rb:
class Plan < ApplicationRecord
# Enum & Constants
enum plan_type: [:responder, :first_responder, :patrol_pro, :guardian]
USER_LIMITS = ActiveSupport::HashWithIndifferentAccess.new(
#Plan Name #Auth Users
responder: 6,
first_responder: 12,
patrol_pro: 30,
guardian: 60
)
# Before Actions
# Relationships
belongs_to :account, optional: true
# Validations
validate :must_be_below_user_limit
# Custom Methods
def user_limit
USER_LIMITS[self.plan_type]
end
def must_be_below_user_limit
if account.present? && persisted? && User.count < user_limit
errors[:user_limit] = "can not more than #{user_limit} users"
end
end
end
功能方面我想确保如果关联帐户的用户数量超过 plan_type 允许的数量,则所有者无法添加用户。如果是这样,我想闪烁一条消息说请升级..
提前谢谢..这是我存在的祸根!!