{"record":{"id":"3548f948744640ee","repo":"faker-ruby/faker","slug":"invalid-gender-gender-must-be-one-of-male-fem","errorCode":null,"errorMessage":"Invalid gender #{gender}. Must be one of male, female, or be omitted.","messagePattern":"Invalid gender #(.+?)\\. Must be one of male, female, or be omitted\\.","errorType":"exception","errorClass":"ArgumentError","httpStatus":null,"severity":"error","filePath":"lib/faker/default/id_number.rb","lineNumber":260,"sourceCode":"      #   Faker::IdNumber.danish_id_number(formatted: true) #=> \"050390-9980\"\n      #   Faker::IdNumber.danish_id_number(birthday: Date.new(1990, 3, 5)) #=> \"0503909980\"\n      #   Faker::IdNumber.danish_id_number(gender: :female) #=> \"0503909980\"\n      #\n      # @faker.version next\n      def danish_id_number(formatted: false, birthday: Faker::Date.birthday, gender: nil)\n        valid_control_digits = danish_control_digits(birthday)\n        control_digit = sample(valid_control_digits)\n        digits = (0..9).to_a\n        gender = gender.to_sym if gender.respond_to?(:to_sym)\n        gender_digit = case gender\n                       when nil\n                         sample(digits)\n                       when :male\n                         sample(digits.select(&:odd?))\n                       when :female\n                         sample(digits.select(&:even?))\n                       else\n                         raise ArgumentError, \"Invalid gender #{gender}. Must be one of male, female, or be omitted.\"\n                       end\n\n        [\n          birthday.strftime('%d%m%y'),\n          formatted ? '-' : '',\n          control_digit,\n          Faker::Number.number(digits: 2),\n          gender_digit\n        ].join\n      end\n\n      ##\n      # Produces a random French social security number (INSEE number).\n      #\n      # @return [String]\n      #\n      # @example\n      #   Faker::IdNumber.french_insee_number #=> \"53290236-H\"","sourceCodeStart":242,"sourceCodeEnd":278,"githubUrl":"https://github.com/faker-ruby/faker/blob/cca4184947e09fdd02afb8b89d25a9c8ebc7274e/lib/faker/default/id_number.rb#L242-L278","documentation":"Raised by Faker::IdNumber.danish_id_number when the gender: keyword is anything other than :male, :female, or nil. Strings are converted with to_sym first, so 'male' and 'female' work, but every other value (e.g. :nonbinary, 'M', :Male) hits the else branch and raises ArgumentError. The gender argument only controls whether the last CPR digit is drawn from odd (male) or even (female) digits.","triggerScenarios":"Faker::IdNumber.danish_id_number(gender: :male) or gender: 'female' are fine; danish_id_number(gender: :Male), gender: 'M', gender: :nonbinary, or any other value raises at lib/faker/default/id_number.rb:260 during the case statement on the symified gender.","commonSituations":"Test suites that model non-binary or abbreviated genders ('m'/'f') in user factories; passing a gender value straight from a form/enum whose values do not match male/female exactly; assuming the API accepts strings like 'Male' with a capital letter.","solutions":["Pass gender: :male, gender: :female, or gender: nil (lowercase symbol or lowercase string).","If your domain model uses different gender values, map them before calling: { 'm' => :male, 'f' => :female, 'x' => nil }.fetch(user.gender)","If you need a gender digit for a value outside male/female, call danish_id_number without gender and post-process, or generate the number yourself."],"exampleFix":"# before\nFaker::IdNumber.danish_id_number(gender: 'Male') # ArgumentError\n\n# after\nFaker::IdNumber.danish_id_number(gender: :male)\nFaker::IdNumber.danish_id_number # omit gender entirely","handlingStrategy":"validation","validationCode":"gender = nil if gender.blank?\ngender = gender.to_s.downcase.to_sym unless gender.nil?\nraise ArgumentError, 'unsupported gender' unless [nil, :male, :female].include?(gender)\nFaker::IdNumber.danish_id_number(gender: gender)","typeGuard":"def valid_faker_gender?(value)\n  [nil, :male, :female].include?(value.respond_to?(:to_sym) ? value.to_s.downcase.to_sym : nil)\nend","tryCatchPattern":"begin\n  Faker::IdNumber.danish_id_number(gender: gender)\nrescue ArgumentError\n  Faker::IdNumber.danish_id_number # retry without gender\nend","preventionTips":["Centralize gender mapping from your domain enum to :male/:female/nil in one helper.","Never forward raw user input as gender; whitelist it first.","Favor omitting gender when the value is optional in your model."],"tags":["faker","argument-error","validation","danish-cpr","id-number"],"backgroundTag":"invalid-enum-argument","analyzedSha":"cca4184947e09fdd02afb8b89d25a9c8ebc7274e","analyzedAt":"2026-08-21T16:25:39.145Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}