{"record":{"id":"553de18b7cea574f","repo":"we-promise/sure","slug":"invalid-onboarding-state","errorCode":null,"errorMessage":"Invalid onboarding state","messagePattern":"Invalid onboarding state","errorType":"validation","errorClass":"Setting::ValidationError","httpStatus":null,"severity":"error","filePath":"app/models/setting.rb","lineNumber":190,"sourceCode":"  # Dynamic fields are now stored as individual entries with \"dynamic:\" prefix\n  # This prevents race conditions and ensures each field is independently managed\n\n  # Onboarding and app settings\n  ONBOARDING_STATES = %w[open closed invite_only].freeze\n  DEFAULT_ONBOARDING_STATE = begin\n    env_value = ENV[\"ONBOARDING_STATE\"].to_s.presence || \"open\"\n    ONBOARDING_STATES.include?(env_value) ? env_value : \"open\"\n  end\n\n  field :onboarding_state, type: :string, default: DEFAULT_ONBOARDING_STATE\n  field :require_invite_for_signup, type: :boolean, default: false\n  field :require_email_confirmation, type: :boolean, default: ENV.fetch(\"REQUIRE_EMAIL_CONFIRMATION\", \"true\") == \"true\"\n  field :invite_only_default_family_id, type: :string, default: nil\n\n  def self.validate_onboarding_state!(state)\n    return if ONBOARDING_STATES.include?(state)\n\n    raise ValidationError, I18n.t(\"settings.hostings.update.invalid_onboarding_state\")\n  end\n\n  class << self\n    alias_method :raw_onboarding_state, :onboarding_state\n    alias_method :raw_onboarding_state=, :onboarding_state=\n    alias_method :raw_openai_model, :openai_model\n    alias_method :raw_openai_model=, :openai_model=\n\n    def onboarding_state\n      value = raw_onboarding_state\n      return \"invite_only\" if value.blank? && require_invite_for_signup\n\n      value.presence || DEFAULT_ONBOARDING_STATE\n    end\n\n    def onboarding_state=(state)\n      validate_onboarding_state!(state)\n      self.require_invite_for_signup = state == \"invite_only\"","sourceCodeStart":172,"sourceCodeEnd":208,"githubUrl":"https://github.com/we-promise/sure/blob/e69894adb92547273377398c15f45c979cd9416a/app/models/setting.rb#L172-L208","documentation":"Error \"Invalid onboarding state\" thrown in we-promise/sure.","triggerScenarios":"Thrown at app/models/setting.rb:190 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e69894adb92547273377398c15f45c979cd9416a","analyzedAt":"2026-08-21T18:22:41.165Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}