Class: Plan
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Plan
- Defined in:
- app/models/plan.rb
Constant Summary collapse
- DEFAULT =
'default'- PLAN_NAME_UID_LIST =
{ default: 1, free: 2, bronze: 3, silver: 4, premium: 5, gold: 6, ultimate: 7, ultimate_trial: 8, premium_trial: 9, ultimate_trial_paid_customer: 10, opensource: 11, early_adopter: 12 }.freeze
Constants inherited from ApplicationRecord
Constants included from HasCheckConstraints
HasCheckConstraints::NOT_NULL_CHECK_PATTERN
Constants included from ResetOnColumnErrors
ResetOnColumnErrors::MAX_RESET_PERIOD
Class Method Summary collapse
- .all_plans ⇒ Object
-
.default ⇒ Object
This always returns an object.
- .default_plans ⇒ Object
-
.ids_for_names(names) ⇒ Object
rubocop: disable Database/AvoidUsingPluckWithoutLimit – This method is prepared for manual usage in Rails console on SaaS.
-
.names_for_ids(plan_ids) ⇒ Object
rubocop: disable Database/AvoidUsingPluckWithoutLimit – This method is prepared for manual usage in Rails console on SaaS.
-
.plan_name_uids_for_ids(plan_ids) ⇒ Object
rubocop: enable Database/AvoidUsingPluckWithoutLimit.
Instance Method Summary collapse
- #actual_limits ⇒ Object
- #default? ⇒ Boolean
- #paid? ⇒ Boolean
- #ultimate_or_ultimate_trial_plans? ⇒ Boolean
Methods inherited from ApplicationRecord
===, cached_column_list, #create_or_load_association, current_transaction, declarative_enum, default_select_columns, delete_all_returning, #deleted_from_database?, id_in, id_not_in, iid_in, nullable_column?, primary_key_in, #readable_by?, safe_ensure_unique, safe_find_or_create_by, safe_find_or_create_by!, #to_ability_name, underscore, where_exists, where_not_exists, with_fast_read_statement_timeout, without_order
Methods included from Organizations::Sharding
Methods included from ResetOnColumnErrors
#reset_on_union_error, #reset_on_unknown_attribute_error
Methods included from Gitlab::SensitiveSerializableHash
Class Method Details
.all_plans ⇒ Object
47 48 49 |
# File 'app/models/plan.rb', line 47 def self.all_plans ALL_PLANS end |
.default ⇒ Object
This always returns an object
39 40 41 42 43 44 45 |
# File 'app/models/plan.rb', line 39 def self.default Gitlab::SafeRequestStore.fetch(:plan_default) do # find_by allows us to find object (cheaply) against replica DB # safe_find_or_create_by does stick to primary DB find_by(name: DEFAULT) || safe_find_or_create_by(name: DEFAULT) { |plan| plan.title = DEFAULT.titleize } end end |
.default_plans ⇒ Object
51 52 53 |
# File 'app/models/plan.rb', line 51 def self.default_plans DEFAULT_PLANS end |
.ids_for_names(names) ⇒ Object
rubocop: disable Database/AvoidUsingPluckWithoutLimit – This method is prepared for manual usage in Rails console on SaaS. Using pluck without limit in this case should be enough safe.
57 58 59 |
# File 'app/models/plan.rb', line 57 def self.ids_for_names(names) where(name: names).pluck(:id) end |
.names_for_ids(plan_ids) ⇒ Object
rubocop: disable Database/AvoidUsingPluckWithoutLimit – This method is prepared for manual usage in Rails console on SaaS. Using pluck without limit in this case should be enough safe.
64 65 66 |
# File 'app/models/plan.rb', line 64 def self.names_for_ids(plan_ids) id_in(plan_ids).pluck(:name) end |
.plan_name_uids_for_ids(plan_ids) ⇒ Object
rubocop: enable Database/AvoidUsingPluckWithoutLimit
69 70 71 |
# File 'app/models/plan.rb', line 69 def self.plan_name_uids_for_ids(plan_ids) id_in(plan_ids).map(&:plan_name_uid_before_type_cast) end |
Instance Method Details
#actual_limits ⇒ Object
73 74 75 |
# File 'app/models/plan.rb', line 73 def actual_limits limits || build_limits end |
#default? ⇒ Boolean
77 78 79 |
# File 'app/models/plan.rb', line 77 def default? self.class.default_plans.include?(name) end |
#paid? ⇒ Boolean
81 82 83 |
# File 'app/models/plan.rb', line 81 def paid? false end |
#ultimate_or_ultimate_trial_plans? ⇒ Boolean
85 86 87 |
# File 'app/models/plan.rb', line 85 def ultimate_or_ultimate_trial_plans? false end |