Class: GreenFlag::Feature
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- GreenFlag::Feature
- Defined in:
- app/models/green_flag/feature.rb
Class Method Summary collapse
Instance Method Summary collapse
- #decide_if_enabled_for_visitor(site_visitor_id) ⇒ Object
- #disabled_count ⇒ Object
- #enabled_count ⇒ Object
- #forget_non_manual_decisions!(enabled) ⇒ Object
- #latest_version ⇒ Object
Class Method Details
.for_code!(code) ⇒ Object
12 13 14 15 16 17 18 19 20 21 |
# File 'app/models/green_flag/feature.rb', line 12 def self.for_code!(code) feature = where(code: code.to_s).first unless feature feature = create!(code: code.to_s) end feature rescue ActiveRecord::RecordNotUnique, PG::Error => ex # Race condition where(code: code.to_s).first || raise end |
Instance Method Details
#decide_if_enabled_for_visitor(site_visitor_id) ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# File 'app/models/green_flag/feature.rb', line 23 def decide_if_enabled_for_visitor(site_visitor_id) fd_query = GreenFlag::FeatureDecision.where(feature_id: id, site_visitor_id: site_visitor_id) feature_decision = fd_query.first_or_initialize if feature_decision.undecided? decide_feature_decision(feature_decision) end feature_decision end |
#disabled_count ⇒ Object
38 39 40 |
# File 'app/models/green_flag/feature.rb', line 38 def disabled_count feature_decisions.disabled.count end |
#enabled_count ⇒ Object
34 35 36 |
# File 'app/models/green_flag/feature.rb', line 34 def enabled_count feature_decisions.enabled.count end |
#forget_non_manual_decisions!(enabled) ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'app/models/green_flag/feature.rb', line 42 def forget_non_manual_decisions!(enabled) non_manual_fds = feature_decisions.non_manual.where(enabled: enabled) if non_manual_fds.count > 0 create_feature_event(enabled, non_manual_fds.count) non_manual_fds.delete_all end end |