Class: S3BucketNameValidator
- Inherits:
-
ActiveModel::EachValidator
- Object
- ActiveModel::EachValidator
- S3BucketNameValidator
- Defined in:
- lib/activerecord/s3/bucket/name/validator.rb
Overview
Usage in a model:
validates :bucket_name, s3_bucket_name: { type: :general_purpose }
Options:
:type => :general_purpose (default), :directory, or :table
:transfer_acceleration => true to forbid periods for TA buckets
Constant Summary collapse
- RESERVED_PREFIXES_GENERAL =
%w[xn-- sthree- amzn-s3-demo-].freeze
- RESERVED_SUFFIXES_GENERAL =
%w[-s3alias --ol-s3 .mrap --x-s3 --table-s3].freeze
- RESERVED_PREFIXES_TABLE =
%w[xn-- sthree- amzn-s3-demo- aws].freeze
- RESERVED_SUFFIXES_TABLE =
%w[-s3alias --ol-s3 --x-s3 --table-s3].freeze
Instance Method Summary collapse
Instance Method Details
#validate_each(record, attribute, value) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/activerecord/s3/bucket/name/validator.rb', line 42 def validate_each(record, attribute, value) type = ([:type] || :general_purpose).to_sym return if blank_ok?(value) valid = case type when :general_purpose then validate_general_purpose(value, transfer_acceleration: !![:transfer_acceleration]) when :directory then validate_directory_bucket(value) when :table then validate_table_bucket(value) else record.errors.add(attribute, :invalid, message: "unknown bucket type: #{type}") false end unless valid error_key = if type == :general_purpose && [:transfer_acceleration] && value.include?(".") :s3_bucket_name_invalid_transfer_acceleration else case type when :general_purpose then :s3_bucket_name_invalid_general when :directory then :s3_bucket_name_invalid_directory when :table then :s3_bucket_name_invalid_table else :s3_bucket_name_invalid end end record.errors.add(attribute, error_key) end end |