active_storage_validations 0.3.1 → 0.4.0
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 +5 -5
- data/README.md +29 -2
- data/config/locales/en.yml +4 -0
- data/lib/active_storage_validations.rb +17 -2
- data/lib/active_storage_validations/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 640238a3efac3a30376f3d5079a630774727ba91
|
4
|
+
data.tar.gz: 01a6ff35bcdf26f1b8b0f0a5fdc55be666c47f43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54c834d284344bf828b048eee45e97766892eccbdc5793b3eae5e8ae7ab9e7e5914960d467fc4fae169e738ba9caaf8f050cd326ba42fb12420ec4fff9f12f0f
|
7
|
+
data.tar.gz: 2e643131d9f35f5707fac32a680460b348bad03e63b985f9135f38c3de18b17e6785fab42858c8a14651378af55351d07024c171530c81e071a0e7bb8e064c35
|
data/README.md
CHANGED
@@ -34,6 +34,29 @@ class Project < ApplicationRecord
|
|
34
34
|
end
|
35
35
|
```
|
36
36
|
|
37
|
+
## Internationalization (I18n)
|
38
|
+
|
39
|
+
Active Storage Validations use I18n for errors messages. For this add there keys in your translation file :
|
40
|
+
|
41
|
+
```yml
|
42
|
+
en:
|
43
|
+
errors:
|
44
|
+
messages:
|
45
|
+
content_type_invalid: "has an invalid content type"
|
46
|
+
```
|
47
|
+
|
48
|
+
In some cases Active Storage Validations provides variables to help you customize messages :
|
49
|
+
|
50
|
+
The "content_type_invalid" key has two variables that you can use, a variable named "content_type" containing the content type of the send file and a variable named "authorized_type" containing the list of authorized content types.
|
51
|
+
|
52
|
+
It's variables are not used by default to leave the choice to the user.
|
53
|
+
|
54
|
+
For example :
|
55
|
+
|
56
|
+
```yml
|
57
|
+
content_type_invalid: "has an invalid content type : %{content_type}"
|
58
|
+
```
|
59
|
+
|
37
60
|
## Installation
|
38
61
|
|
39
62
|
Add this line to your application's Gemfile:
|
@@ -55,7 +78,6 @@ Very simple example of validation with file attached, content type check and cus
|
|
55
78
|
|
56
79
|
## Todo
|
57
80
|
* verify with remote storages
|
58
|
-
* better error message when content_type is invalid
|
59
81
|
* travis CI
|
60
82
|
* validation for file size
|
61
83
|
|
@@ -66,7 +88,12 @@ To run tests in root folder of gem `rake test`.
|
|
66
88
|
To play with app `cd test/dummy` and `rails s -b 0.0.0.0` (before `rake db:migrate`).
|
67
89
|
|
68
90
|
## Contributing
|
69
|
-
|
91
|
+
You are welcome to contribute.
|
92
|
+
|
93
|
+
## Contributors (BIG THANK YOU)
|
94
|
+
- https://github.com/schweigert
|
95
|
+
- https://github.com/tleneveu
|
96
|
+
|
70
97
|
|
71
98
|
## License
|
72
99
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require "active_storage_validations/railtie"
|
2
2
|
|
3
3
|
module ActiveStorageValidations
|
4
|
+
class Engine < ::Rails::Engine
|
5
|
+
end
|
4
6
|
|
5
7
|
class AttachedValidator < ActiveModel::EachValidator
|
6
8
|
def validate_each(record, attribute, value)
|
@@ -19,9 +21,14 @@ module ActiveStorageValidations
|
|
19
21
|
|
20
22
|
files = Array.wrap(files)
|
21
23
|
|
24
|
+
errors_options = { authorized_types: types_to_human_format }
|
25
|
+
errors_options[:message] = options[:message] if options[:message].present?
|
26
|
+
|
22
27
|
files.each do |file|
|
23
|
-
unless content_type_valid?(file)
|
24
|
-
|
28
|
+
unless content_type_valid?(file)
|
29
|
+
errors_options[:content_type] = content_type(file)
|
30
|
+
|
31
|
+
record.errors.add(attribute, :content_type_invalid, errors_options)
|
25
32
|
return
|
26
33
|
end
|
27
34
|
end
|
@@ -31,6 +38,14 @@ module ActiveStorageValidations
|
|
31
38
|
Array.wrap(options[:with]) + Array.wrap(options[:in])
|
32
39
|
end
|
33
40
|
|
41
|
+
def types_to_human_format
|
42
|
+
types.join(", ")
|
43
|
+
end
|
44
|
+
|
45
|
+
def content_type(file)
|
46
|
+
file.blob.content_type
|
47
|
+
end
|
48
|
+
|
34
49
|
def content_type_valid?(file)
|
35
50
|
file.blob.present? && file.blob.content_type.in?(types)
|
36
51
|
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: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Kasyanchuk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- MIT-LICENSE
|
63
63
|
- README.md
|
64
64
|
- Rakefile
|
65
|
+
- config/locales/en.yml
|
65
66
|
- lib/active_storage_validations.rb
|
66
67
|
- lib/active_storage_validations/railtie.rb
|
67
68
|
- lib/active_storage_validations/version.rb
|
@@ -86,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
87
|
version: '0'
|
87
88
|
requirements: []
|
88
89
|
rubyforge_project:
|
89
|
-
rubygems_version: 2.
|
90
|
+
rubygems_version: 2.6.8
|
90
91
|
signing_key:
|
91
92
|
specification_version: 4
|
92
93
|
summary: Validations for Active Storage
|