Module: SpreeCmCommissioner::VotingSessionConfigConcern

Extended by:
ActiveSupport::Concern
Included in:
VotingSession
Defined in:
app/models/concerns/spree_cm_commissioner/voting_session_config_concern.rb

Overview

The fraud_config/voting_config JSON stores and their derived, show-inheriting accessors. Extracted purely to keep VotingSession under RuboCop's Metrics/ClassLength — no behavior here depends on anything else in the concern split (unlike VotingSessionTimingConcern, whose enum/predicate ordering matters).

Constant Summary collapse

DEFAULT_SUGGESTION_TOP_N =
1

Instance Method Summary collapse

Instance Method Details

#effective_fraud_configObject



48
49
50
51
52
53
54
# File 'app/models/concerns/spree_cm_commissioner/voting_session_config_concern.rb', line 48

def effective_fraud_config
  return {} unless show

  config = parse_json_config(fraud_config)
  show_config = show.effective_fraud_config
  config.reverse_merge(show_config || {})
end

#effective_suggestion_top_nObject



36
37
38
# File 'app/models/concerns/spree_cm_commissioner/voting_session_config_concern.rb', line 36

def effective_suggestion_top_n
  suggestion_top_n&.to_i&.positive? ? suggestion_top_n.to_i : DEFAULT_SUGGESTION_TOP_N
end

#effective_voting_configObject



40
41
42
43
44
45
46
# File 'app/models/concerns/spree_cm_commissioner/voting_session_config_concern.rb', line 40

def effective_voting_config
  return {} unless show

  config = parse_json_config(voting_config)
  show_config = show.effective_voting_config
  config.reverse_merge(show_config || {})
end

#max_votes_per_userObject



56
57
58
# File 'app/models/concerns/spree_cm_commissioner/voting_session_config_concern.rb', line 56

def max_votes_per_user
  effective_voting_config['max_votes_per_user'] || 10
end

#rate_limit_max_votesObject



64
65
66
# File 'app/models/concerns/spree_cm_commissioner/voting_session_config_concern.rb', line 64

def rate_limit_max_votes
  effective_voting_config['rate_limit_max_votes'] || 5
end

#rate_limit_windowObject



60
61
62
# File 'app/models/concerns/spree_cm_commissioner/voting_session_config_concern.rb', line 60

def rate_limit_window
  effective_voting_config['rate_limit_window'] || 60
end