active_storage_validations 3.0.2 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/config/locales/sv.yml +6 -6
- data/config/locales/uk.yml +63 -63
- data/config/locales/vi.yml +4 -4
- data/config/locales/zh-CN.yml +2 -2
- data/lib/active_storage_validations/analyzer/pdf_analyzer.rb +2 -2
- data/lib/active_storage_validations/shared/asv_errorable.rb +1 -25
- data/lib/active_storage_validations/version.rb +1 -1
- metadata +2 -3
- data/lib/tasks/active_storage_validations_tasks.rake +0 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9722633df97a05e71db94072d8da441d84e47ec8294fbda4d1a46ef3bf358114
|
|
4
|
+
data.tar.gz: 9fdbf2bfaf5887c82cc142abdab8b53cfc26ebad1427a0bbbd73e0cd3af3d520
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0f9791b37f25bff2d20e5d6107c495865733f3510586566e634e8674069aec63dcec842cb29fc096e719d737a4b60b8dd3e498f5d77a51a76f93f6973a968bfe
|
|
7
|
+
data.tar.gz: 0e49d25ccede0a43397d107b6ee84d45753e8a68e577e8f630e57d91a85e803a719c68eecf87e48b5cc56dccde3c10f4d75654f3ba1ad85e0672897ec3394f55
|
data/README.md
CHANGED
|
@@ -908,6 +908,7 @@ To run the gem tests, launch the following commands in the root folder of gem re
|
|
|
908
908
|
* `BUNDLE_GEMFILE=gemfiles/rails_7_1.gemfile bundle exec rake test` to run for Rails 7.1
|
|
909
909
|
* `BUNDLE_GEMFILE=gemfiles/rails_7_2.gemfile bundle exec rake test` to run for Rails 7.2
|
|
910
910
|
* `BUNDLE_GEMFILE=gemfiles/rails_8_0.gemfile bundle exec rake test` to run for Rails 8.0
|
|
911
|
+
* `BUNDLE_GEMFILE=gemfiles/rails_8_1.gemfile bundle exec rake test` to run for Rails 8.1
|
|
911
912
|
* `BUNDLE_GEMFILE=gemfiles/rails_next.gemfile bundle exec rake test` to run for Rails main
|
|
912
913
|
|
|
913
914
|
Snippet to run in console:
|
|
@@ -918,12 +919,14 @@ BUNDLE_GEMFILE=gemfiles/rails_7_0.gemfile bundle
|
|
|
918
919
|
BUNDLE_GEMFILE=gemfiles/rails_7_1.gemfile bundle
|
|
919
920
|
BUNDLE_GEMFILE=gemfiles/rails_7_2.gemfile bundle
|
|
920
921
|
BUNDLE_GEMFILE=gemfiles/rails_8_0.gemfile bundle
|
|
922
|
+
BUNDLE_GEMFILE=gemfiles/rails_8_1.gemfile bundle
|
|
921
923
|
BUNDLE_GEMFILE=gemfiles/rails_next.gemfile bundle
|
|
922
924
|
BUNDLE_GEMFILE=gemfiles/rails_6_1_4.gemfile bundle exec rake test
|
|
923
925
|
BUNDLE_GEMFILE=gemfiles/rails_7_0.gemfile bundle exec rake test
|
|
924
926
|
BUNDLE_GEMFILE=gemfiles/rails_7_1.gemfile bundle exec rake test
|
|
925
927
|
BUNDLE_GEMFILE=gemfiles/rails_7_2.gemfile bundle exec rake test
|
|
926
928
|
BUNDLE_GEMFILE=gemfiles/rails_8_0.gemfile bundle exec rake test
|
|
929
|
+
BUNDLE_GEMFILE=gemfiles/rails_8_1.gemfile bundle exec rake test
|
|
927
930
|
BUNDLE_GEMFILE=gemfiles/rails_next.gemfile bundle exec rake test
|
|
928
931
|
```
|
|
929
932
|
|
data/config/locales/sv.yml
CHANGED
|
@@ -19,12 +19,12 @@ sv:
|
|
|
19
19
|
total_file_size_not_greater_than_or_equal_to: "total filstorlek måste vara större än eller lika med %{min} (nuvarande storlek är %{total_file_size})"
|
|
20
20
|
total_file_size_not_between: "total filstorlek måste vara mellan %{min} och %{max} (nuvarande storlek är %{total_file_size})"
|
|
21
21
|
total_file_size_not_equal_to: "total filstorlek måste vara lika med %{exact} (nuvarande storlek är %{total_file_size})"
|
|
22
|
-
duration_not_less_than: "varaktigheten måste vara mindre än %{max} (nuvarande varaktighet är %{
|
|
23
|
-
duration_not_less_than_or_equal_to: "varaktigheten måste vara mindre än eller lika med %{max} (nuvarande varaktighet är %{
|
|
24
|
-
duration_not_greater_than: "varaktigheten måste vara större än %{min} (nuvarande varaktighet är %{
|
|
25
|
-
duration_not_greater_than_or_equal_to: "varaktigheten måste vara större än eller lika med %{min} (nuvarande varaktighet är %{
|
|
26
|
-
duration_not_between: "varaktigheten måste vara mellan %{min} och %{max} (nuvarande varaktighet är %{
|
|
27
|
-
duration_not_equal_to: "varaktigheten måste vara lika med %{exact} (nuvarande varaktighet är %{
|
|
22
|
+
duration_not_less_than: "varaktigheten måste vara mindre än %{max} (nuvarande varaktighet är %{duration})"
|
|
23
|
+
duration_not_less_than_or_equal_to: "varaktigheten måste vara mindre än eller lika med %{max} (nuvarande varaktighet är %{duration})"
|
|
24
|
+
duration_not_greater_than: "varaktigheten måste vara större än %{min} (nuvarande varaktighet är %{duration})"
|
|
25
|
+
duration_not_greater_than_or_equal_to: "varaktigheten måste vara större än eller lika med %{min} (nuvarande varaktighet är %{duration})"
|
|
26
|
+
duration_not_between: "varaktigheten måste vara mellan %{min} och %{max} (nuvarande varaktighet är %{duration})"
|
|
27
|
+
duration_not_equal_to: "varaktigheten måste vara lika med %{exact} (nuvarande varaktighet är %{duration})"
|
|
28
28
|
limit_out_of_range:
|
|
29
29
|
zero: "inga filer bifogade (måste ha mellan %{min} och %{max} filer)"
|
|
30
30
|
one: "endast en fil bifogad (måste ha mellan %{min} och %{max} filer)"
|
data/config/locales/uk.yml
CHANGED
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
uk:
|
|
2
|
-
errors:
|
|
3
|
-
messages:
|
|
4
|
-
content_type_invalid:
|
|
5
|
-
one: "має недійсний тип вмісту (уповноважений тип вмісту становить %{
|
|
6
|
-
other: "має недійсний тип вмісту (дозволені типи вмісту %{
|
|
7
|
-
content_type_spoofed:
|
|
8
|
-
one: "має тип вмісту, який не еквівалентний тому, який виявляється через його вміст (уповноважений тип вмісту становить %{
|
|
9
|
-
other: "має тип вмісту, який не еквівалентний тому, який виявляється через його вміст (дозволені типи вмісту %{
|
|
10
|
-
file_size_not_less_than: "розмір файлу має бути менше %{max} (поточний розмір %{file_size})"
|
|
11
|
-
file_size_not_less_than_or_equal_to: "розмір файлу має бути меншим або дорівнювати %{max} (поточний розмір %{file_size})"
|
|
12
|
-
file_size_not_greater_than: "розмір файлу має бути більшим ніж %{min} (поточний розмір %{file_size})"
|
|
13
|
-
file_size_not_greater_than_or_equal_to: "розмір файлу має бути більшим або дорівнювати %{min} (поточний розмір %{file_size})"
|
|
14
|
-
file_size_not_between: "розмір файлу має бути від %{min} до %{max} (поточний розмір %{file_size})"
|
|
15
|
-
file_size_not_equal_to: "розмір файлу має бути рівний %{exact} (поточний розмір %{file_size})"
|
|
16
|
-
total_file_size_not_less_than: "загальний розмір файлу має бути менше %{max} (поточний розмір %{total_file_size})"
|
|
17
|
-
total_file_size_not_less_than_or_equal_to: "загальний розмір файлу має бути меншим або дорівнювати %{max} (поточний розмір %{total_file_size})"
|
|
18
|
-
total_file_size_not_greater_than: "загальний розмір файлу має бути більшим ніж %{min} (поточний розмір %{total_file_size})"
|
|
19
|
-
total_file_size_not_greater_than_or_equal_to: "загальний розмір файлу має бути більшим або дорівнювати %{min} (поточний розмір %{total_file_size})"
|
|
20
|
-
total_file_size_not_between: "загальний розмір файлу має бути від %{min} до %{max} (поточний розмір %{total_file_size})"
|
|
21
|
-
total_file_size_not_equal_to: "загальний розмір файлу має бути рівний %{exact} (поточний розмір %{total_file_size})"
|
|
22
|
-
duration_not_less_than: "тривалість повинна бути меншою ніж %{max} (поточна тривалість становить %{duration})"
|
|
23
|
-
duration_not_less_than_or_equal_to: "тривалість повинна бути меншою або дорівнює %{max} (поточна тривалість становить %{duration})"
|
|
24
|
-
duration_not_greater_than: "тривалість повинна бути більше %{min} (поточна тривалість становить %{duration})"
|
|
25
|
-
duration_not_greater_than_or_equal_to: "тривалість повинна бути більшою або дорівнює %{min} (поточна тривалість становить %{duration})"
|
|
26
|
-
duration_not_between: "тривалість повинна бути між %{min} і %{max} (поточна тривалість становить %{duration})"
|
|
27
|
-
duration_not_equal_to: "тривалість повинна бути рівна %{exact} (поточна тривалість становить %{duration})"
|
|
28
|
-
limit_out_of_range:
|
|
29
|
-
zero: "немає доданих файлів (повинно мати між %{min} і %{max} файли)"
|
|
30
|
-
one: "додається лише 1 файл (повинен мати між %{min} і %{max} файли)"
|
|
31
|
-
other: "загальна кількість файлів повинна бути між %{min} і %{max} файлами (є %{count} файли)"
|
|
32
|
-
limit_min_not_reached:
|
|
33
|
-
zero: "немає доданих файлів (повинен мати принаймні %{min} файлів)"
|
|
34
|
-
one: "додається лише 1 файл (повинен мати принаймні %{min} файли)"
|
|
35
|
-
other: "%{count} додані файли (повинні мати принаймні %{min} файли)"
|
|
36
|
-
limit_max_exceeded:
|
|
37
|
-
zero: "не додано файлів (максимум -%{max} файли)"
|
|
38
|
-
one: "занадто багато доданих файлів (максимум -%{max} файлів, отримав %{count})"
|
|
39
|
-
other: "занадто багато доданих файлів (максимум -%{max} файлів, отримав %{count})"
|
|
40
|
-
attachment_missing: "не має доданого файлу"
|
|
41
|
-
media_metadata_missing: "не є допустимим зображенням"
|
|
42
|
-
dimension_min_not_included_in: "мусить бути більше або дорівнювати %{width} x %{height} пікселям"
|
|
43
|
-
dimension_max_not_included_in: "мусить бути менше або дорівнювати %{width} x %{height} пікселям"
|
|
44
|
-
dimension_width_not_included_in: "ширина не включена між %{min} і %{max} пікселям"
|
|
45
|
-
dimension_height_not_included_in: "висота не включена між %{min} і %{max} пікселям"
|
|
46
|
-
dimension_width_not_greater_than_or_equal_to: "ширина мусить бути більше або дорівнювати %{length} пікселям"
|
|
47
|
-
dimension_height_not_greater_than_or_equal_to: "висота мусить бути більше або дорівнювати %{length} пікселям"
|
|
48
|
-
dimension_width_not_less_than_or_equal_to: "ширина мусить бути менше або дорівнювати %{length} пікселям"
|
|
49
|
-
dimension_height_not_less_than_or_equal_to: "висота мусить бути менше або дорівнювати %{length} пікселям"
|
|
50
|
-
dimension_width_not_equal_to: "ширина мусить дорівнювати %{length} пікселям"
|
|
51
|
-
dimension_height_not_equal_to: "висота мусить дорівнювати %{length} пікселям"
|
|
52
|
-
aspect_ratio_not_square: "повинен бути квадратним (поточний файл %{width}x%{height} пікселям)"
|
|
53
|
-
aspect_ratio_not_portrait: "повинен бути портретним (поточний файл %{width}x%{height} пікселям)"
|
|
54
|
-
aspect_ratio_not_landscape: "повинен бути пейзажним (поточний файл %{width}x%{height} пікселям)"
|
|
55
|
-
aspect_ratio_not_x_y: "повинен бути %{authorized_aspect_ratios} (поточний файл становить %{width}x%{height} пікселям)"
|
|
56
|
-
aspect_ratio_invalid: "має недійсне співвідношення сторін (дійсні співвідношення сторін %{authorized_aspect_ratios})"
|
|
57
|
-
file_not_processable: "не ідентифікується як дійсний медіа-файл"
|
|
58
|
-
pages_not_less_than: "кількість сторінок має бути менше %{max} (поточна кількість сторінок %{pages})"
|
|
59
|
-
pages_not_less_than_or_equal_to: "кількість сторінок має бути меншою або дорівнювати %{max} (поточна кількість сторінок становить %{pages})"
|
|
60
|
-
pages_not_greater_than: "кількість сторінок має бути більшою за %{min} (поточна кількість сторінок становить %{pages})"
|
|
61
|
-
pages_not_greater_than_or_equal_to: "кількість сторінок має бути більшою або дорівнювати %{min} (поточна кількість сторінок становить %{pages})"
|
|
62
|
-
pages_not_between: "кількість сторінок має бути від %{min} до %{max} (поточна кількість сторінок становить %{pages})"
|
|
63
|
-
pages_not_equal_to: "кількість сторінок має дорівнювати %{exact} (поточна кількість сторінок - %{pages})"
|
|
1
|
+
uk:
|
|
2
|
+
errors:
|
|
3
|
+
messages:
|
|
4
|
+
content_type_invalid:
|
|
5
|
+
one: "має недійсний тип вмісту (уповноважений тип вмісту становить %{authorized_human_content_types})"
|
|
6
|
+
other: "має недійсний тип вмісту (дозволені типи вмісту %{authorized_human_content_types})"
|
|
7
|
+
content_type_spoofed:
|
|
8
|
+
one: "має тип вмісту, який не еквівалентний тому, який виявляється через його вміст (уповноважений тип вмісту становить %{authorized_human_content_types})"
|
|
9
|
+
other: "має тип вмісту, який не еквівалентний тому, який виявляється через його вміст (дозволені типи вмісту %{authorized_human_content_types})"
|
|
10
|
+
file_size_not_less_than: "розмір файлу має бути менше %{max} (поточний розмір %{file_size})"
|
|
11
|
+
file_size_not_less_than_or_equal_to: "розмір файлу має бути меншим або дорівнювати %{max} (поточний розмір %{file_size})"
|
|
12
|
+
file_size_not_greater_than: "розмір файлу має бути більшим ніж %{min} (поточний розмір %{file_size})"
|
|
13
|
+
file_size_not_greater_than_or_equal_to: "розмір файлу має бути більшим або дорівнювати %{min} (поточний розмір %{file_size})"
|
|
14
|
+
file_size_not_between: "розмір файлу має бути від %{min} до %{max} (поточний розмір %{file_size})"
|
|
15
|
+
file_size_not_equal_to: "розмір файлу має бути рівний %{exact} (поточний розмір %{file_size})"
|
|
16
|
+
total_file_size_not_less_than: "загальний розмір файлу має бути менше %{max} (поточний розмір %{total_file_size})"
|
|
17
|
+
total_file_size_not_less_than_or_equal_to: "загальний розмір файлу має бути меншим або дорівнювати %{max} (поточний розмір %{total_file_size})"
|
|
18
|
+
total_file_size_not_greater_than: "загальний розмір файлу має бути більшим ніж %{min} (поточний розмір %{total_file_size})"
|
|
19
|
+
total_file_size_not_greater_than_or_equal_to: "загальний розмір файлу має бути більшим або дорівнювати %{min} (поточний розмір %{total_file_size})"
|
|
20
|
+
total_file_size_not_between: "загальний розмір файлу має бути від %{min} до %{max} (поточний розмір %{total_file_size})"
|
|
21
|
+
total_file_size_not_equal_to: "загальний розмір файлу має бути рівний %{exact} (поточний розмір %{total_file_size})"
|
|
22
|
+
duration_not_less_than: "тривалість повинна бути меншою ніж %{max} (поточна тривалість становить %{duration})"
|
|
23
|
+
duration_not_less_than_or_equal_to: "тривалість повинна бути меншою або дорівнює %{max} (поточна тривалість становить %{duration})"
|
|
24
|
+
duration_not_greater_than: "тривалість повинна бути більше %{min} (поточна тривалість становить %{duration})"
|
|
25
|
+
duration_not_greater_than_or_equal_to: "тривалість повинна бути більшою або дорівнює %{min} (поточна тривалість становить %{duration})"
|
|
26
|
+
duration_not_between: "тривалість повинна бути між %{min} і %{max} (поточна тривалість становить %{duration})"
|
|
27
|
+
duration_not_equal_to: "тривалість повинна бути рівна %{exact} (поточна тривалість становить %{duration})"
|
|
28
|
+
limit_out_of_range:
|
|
29
|
+
zero: "немає доданих файлів (повинно мати між %{min} і %{max} файли)"
|
|
30
|
+
one: "додається лише 1 файл (повинен мати між %{min} і %{max} файли)"
|
|
31
|
+
other: "загальна кількість файлів повинна бути між %{min} і %{max} файлами (є %{count} файли)"
|
|
32
|
+
limit_min_not_reached:
|
|
33
|
+
zero: "немає доданих файлів (повинен мати принаймні %{min} файлів)"
|
|
34
|
+
one: "додається лише 1 файл (повинен мати принаймні %{min} файли)"
|
|
35
|
+
other: "%{count} додані файли (повинні мати принаймні %{min} файли)"
|
|
36
|
+
limit_max_exceeded:
|
|
37
|
+
zero: "не додано файлів (максимум -%{max} файли)"
|
|
38
|
+
one: "занадто багато доданих файлів (максимум -%{max} файлів, отримав %{count})"
|
|
39
|
+
other: "занадто багато доданих файлів (максимум -%{max} файлів, отримав %{count})"
|
|
40
|
+
attachment_missing: "не має доданого файлу"
|
|
41
|
+
media_metadata_missing: "не є допустимим зображенням"
|
|
42
|
+
dimension_min_not_included_in: "мусить бути більше або дорівнювати %{width} x %{height} пікселям"
|
|
43
|
+
dimension_max_not_included_in: "мусить бути менше або дорівнювати %{width} x %{height} пікселям"
|
|
44
|
+
dimension_width_not_included_in: "ширина не включена між %{min} і %{max} пікселям"
|
|
45
|
+
dimension_height_not_included_in: "висота не включена між %{min} і %{max} пікселям"
|
|
46
|
+
dimension_width_not_greater_than_or_equal_to: "ширина мусить бути більше або дорівнювати %{length} пікселям"
|
|
47
|
+
dimension_height_not_greater_than_or_equal_to: "висота мусить бути більше або дорівнювати %{length} пікселям"
|
|
48
|
+
dimension_width_not_less_than_or_equal_to: "ширина мусить бути менше або дорівнювати %{length} пікселям"
|
|
49
|
+
dimension_height_not_less_than_or_equal_to: "висота мусить бути менше або дорівнювати %{length} пікселям"
|
|
50
|
+
dimension_width_not_equal_to: "ширина мусить дорівнювати %{length} пікселям"
|
|
51
|
+
dimension_height_not_equal_to: "висота мусить дорівнювати %{length} пікселям"
|
|
52
|
+
aspect_ratio_not_square: "повинен бути квадратним (поточний файл %{width}x%{height} пікселям)"
|
|
53
|
+
aspect_ratio_not_portrait: "повинен бути портретним (поточний файл %{width}x%{height} пікселям)"
|
|
54
|
+
aspect_ratio_not_landscape: "повинен бути пейзажним (поточний файл %{width}x%{height} пікселям)"
|
|
55
|
+
aspect_ratio_not_x_y: "повинен бути %{authorized_aspect_ratios} (поточний файл становить %{width}x%{height} пікселям)"
|
|
56
|
+
aspect_ratio_invalid: "має недійсне співвідношення сторін (дійсні співвідношення сторін %{authorized_aspect_ratios})"
|
|
57
|
+
file_not_processable: "не ідентифікується як дійсний медіа-файл"
|
|
58
|
+
pages_not_less_than: "кількість сторінок має бути менше %{max} (поточна кількість сторінок %{pages})"
|
|
59
|
+
pages_not_less_than_or_equal_to: "кількість сторінок має бути меншою або дорівнювати %{max} (поточна кількість сторінок становить %{pages})"
|
|
60
|
+
pages_not_greater_than: "кількість сторінок має бути більшою за %{min} (поточна кількість сторінок становить %{pages})"
|
|
61
|
+
pages_not_greater_than_or_equal_to: "кількість сторінок має бути більшою або дорівнювати %{min} (поточна кількість сторінок становить %{pages})"
|
|
62
|
+
pages_not_between: "кількість сторінок має бути від %{min} до %{max} (поточна кількість сторінок становить %{pages})"
|
|
63
|
+
pages_not_equal_to: "кількість сторінок має дорівнювати %{exact} (поточна кількість сторінок - %{pages})"
|
data/config/locales/vi.yml
CHANGED
|
@@ -2,11 +2,11 @@ vi:
|
|
|
2
2
|
errors:
|
|
3
3
|
messages:
|
|
4
4
|
content_type_invalid:
|
|
5
|
-
one: "có loại nội dung không hợp lệ (loại nội dung được ủy quyền là %{
|
|
6
|
-
other: "có loại nội dung không hợp lệ (các loại nội dung được ủy quyền là %{
|
|
5
|
+
one: "có loại nội dung không hợp lệ (loại nội dung được ủy quyền là %{authorized_human_content_types})"
|
|
6
|
+
other: "có loại nội dung không hợp lệ (các loại nội dung được ủy quyền là %{authorized_human_content_types})"
|
|
7
7
|
content_type_spoofed:
|
|
8
|
-
one: "có một loại nội dung không tương đương với loại được phát hiện thông qua nội dung của nó (loại nội dung được ủy quyền là %{
|
|
9
|
-
other: "có một loại nội dung không tương đương với loại được phát hiện thông qua nội dung của nó (các loại nội dung được ủy quyền là %{
|
|
8
|
+
one: "có một loại nội dung không tương đương với loại được phát hiện thông qua nội dung của nó (loại nội dung được ủy quyền là %{authorized_human_content_types})"
|
|
9
|
+
other: "có một loại nội dung không tương đương với loại được phát hiện thông qua nội dung của nó (các loại nội dung được ủy quyền là %{authorized_human_content_types})"
|
|
10
10
|
file_size_not_less_than: "kích thước tệp phải nhỏ hơn %{max} (kích thước hiện tại là %{file_size})"
|
|
11
11
|
file_size_not_less_than_or_equal_to: "kích thước tệp phải nhỏ hơn hoặc bằng %{max} (kích thước hiện tại là %{file_size})"
|
|
12
12
|
file_size_not_greater_than: "kích thước tệp phải lớn hơn %{min} (kích thước hiện tại là %{file_size})"
|
data/config/locales/zh-CN.yml
CHANGED
|
@@ -52,8 +52,8 @@ zh-CN:
|
|
|
52
52
|
aspect_ratio_not_square: "必须为正方形(当前文件为 %{width} x%{height} 像素)"
|
|
53
53
|
aspect_ratio_not_portrait: "必须是纵向的(当前文件为 %{width} x%{height} 像素)"
|
|
54
54
|
aspect_ratio_not_landscape: "必须是横向(当前文件为 %{width} x%{height} 像素)"
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
aspect_ratio_not_x_y: "必须为 %{authorized_aspect_ratios}(当前文件为 %{width} x%{height} 像素)"
|
|
56
|
+
aspect_ratio_invalid: "具有无效的长宽比(有效长宽比为 %{authorized_aspect_ratios})"
|
|
57
57
|
file_not_processable: "未标识为有效的媒体文件"
|
|
58
58
|
pages_not_less_than: "页数必须小于 %{max}(当前页数为 %{pages})"
|
|
59
59
|
pages_not_less_than_or_equal_to: "页数必须小于或等于 %{max}(当前页数为 %{pages})"
|
|
@@ -75,11 +75,11 @@ module ActiveStorageValidations
|
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
def width
|
|
78
|
-
@media["page_size"].scan(/\d
|
|
78
|
+
@media["page_size"].scan(/\d+\.?\d?/)[0].to_i
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
def height
|
|
82
|
-
@media["page_size"].scan(/\d
|
|
82
|
+
@media["page_size"].scan(/\d+\.?\d?/)[1].to_i
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
def pages
|
|
@@ -20,18 +20,9 @@ module ActiveStorageValidations
|
|
|
20
20
|
def add_error(record, attribute, error_type, **errors_options)
|
|
21
21
|
return if record.errors.added?(attribute, error_type)
|
|
22
22
|
|
|
23
|
-
error = record.errors.add(attribute, error_type, **errors_options)
|
|
24
|
-
|
|
25
|
-
# Rails 8.0.2 introduced a new way to mark errors as nested
|
|
26
|
-
# https://github.com/igorkasyanchuk/active_storage_validations/issues/377
|
|
27
|
-
if Rails.gem_version >= Gem::Version.new("8.0.2")
|
|
28
|
-
# Mark errors as nested when they occur in a parent/child context
|
|
29
|
-
set_nested_error(record, error) if updating_through_parent?(record)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
23
|
# You can read https://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-add
|
|
33
24
|
# to better understand how Rails model errors work
|
|
34
|
-
|
|
25
|
+
record.errors.add(attribute, error_type, **errors_options)
|
|
35
26
|
end
|
|
36
27
|
|
|
37
28
|
private
|
|
@@ -45,20 +36,5 @@ module ActiveStorageValidations
|
|
|
45
36
|
when Hash then file[:filename]
|
|
46
37
|
end.to_s
|
|
47
38
|
end
|
|
48
|
-
|
|
49
|
-
def updating_through_parent?(record)
|
|
50
|
-
record.instance_variable_defined?(:@marked_for_destruction) ||
|
|
51
|
-
record.instance_variable_defined?(:@_destroy) ||
|
|
52
|
-
(record.respond_to?(:parent) && record.parent.present?)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def set_nested_error(record, error)
|
|
56
|
-
reflection = record.class.reflect_on_association(:parent)
|
|
57
|
-
|
|
58
|
-
if reflection
|
|
59
|
-
association = record.association(reflection.name)
|
|
60
|
-
record.errors.objects.append(ActiveRecord::Associations::NestedError.new(association, error))
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
39
|
end
|
|
64
40
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: active_storage_validations
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0.
|
|
4
|
+
version: 3.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Igor Kasyanchuk
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-
|
|
11
|
+
date: 2025-12-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activejob
|
|
@@ -312,7 +312,6 @@ files:
|
|
|
312
312
|
- lib/active_storage_validations/size_validator.rb
|
|
313
313
|
- lib/active_storage_validations/total_size_validator.rb
|
|
314
314
|
- lib/active_storage_validations/version.rb
|
|
315
|
-
- lib/tasks/active_storage_validations_tasks.rake
|
|
316
315
|
homepage: https://github.com/igorkasyanchuk/active_storage_validations
|
|
317
316
|
licenses:
|
|
318
317
|
- MIT
|