punctual_date_select 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -2
- data/lib/punctual_date_select/model.rb +21 -12
- data/lib/punctual_date_select/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0deb7f39a8a4b4a36251e069ddc28e1cd9826f4c
|
4
|
+
data.tar.gz: abb398567b48a4d67bafde2789bcbf5705b83bba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c29796d52199eb24c75d825e1cd02cb6fd7e96ced0a8a1e82f8f13690939fba39172d4a4d5df28b3ede0d5bb22221a17e6278366d393c4fbe2e92e5a0566c952
|
7
|
+
data.tar.gz: de3a9c14268ec9a4a7179c74f9ea4dbc900fe6dc9dcf13bb0b65040866920eaa8b19ea72cf90c6fe426cb22c9d15566406607e4bc7a0c707794b608318144caa
|
data/README.md
CHANGED
@@ -8,8 +8,6 @@ This may cause a human error in some use cases.
|
|
8
8
|
With PunctualDateSelect, you can hold invalid date as they are specified by an user and show the invalid error message.
|
9
9
|
Therefore users can notice the mistakes they've made.
|
10
10
|
|
11
|
-
This gem is for Rails 4 currently.
|
12
|
-
|
13
11
|
## Key concept
|
14
12
|
|
15
13
|
Using PunctualDateSelect, your date column value won't have Date object while it is non-existing date.
|
@@ -20,6 +18,13 @@ If the specified date from punctual_date_select fields is collect, it will be ca
|
|
20
18
|
|
21
19
|
Note that you need to run validation before you save it not to send those parameters holding invalid date data to DB.
|
22
20
|
|
21
|
+
## Supported Versions
|
22
|
+
|
23
|
+
* Ruby
|
24
|
+
* 2.0 or higher
|
25
|
+
* Rails
|
26
|
+
* 4.2, 5.0, 5.1
|
27
|
+
|
23
28
|
## Installation
|
24
29
|
|
25
30
|
Add this line to your application's Gemfile:
|
@@ -36,14 +36,6 @@ module PunctualDateSelect
|
|
36
36
|
module ClassMethods
|
37
37
|
def punctual_date_column(*args)
|
38
38
|
args.each do |column_name|
|
39
|
-
cast_method = :"cast_#{column_name}_if_possible"
|
40
|
-
before_validation cast_method
|
41
|
-
|
42
|
-
define_method cast_method do
|
43
|
-
casted_date = send(column_name).try(:to_date)
|
44
|
-
send("#{column_name}=", casted_date) if casted_date
|
45
|
-
end
|
46
|
-
|
47
39
|
validation_method = :"validate_#{column_name}_is_casted"
|
48
40
|
validate validation_method
|
49
41
|
|
@@ -52,16 +44,15 @@ module PunctualDateSelect
|
|
52
44
|
end
|
53
45
|
|
54
46
|
define_method "#{column_name}=" do |value|
|
55
|
-
|
56
|
-
if value.kind_of?(Hash) && !value.kind_of?(PunctualDateSelect::DateHash)
|
47
|
+
if value.kind_of?(Hash) && !value.kind_of?(PunctualDateSelect::DateHash) && (value.keys & %i[year month day]).any?
|
57
48
|
class << value
|
58
49
|
include PunctualDateSelect::DateHash
|
59
50
|
end
|
60
51
|
end
|
61
|
-
self[column_name]
|
52
|
+
self[column_name] = (value.kind_of?(Hash) && value.values.any?{|t| t.blank?}) ? nil : value
|
62
53
|
end
|
63
54
|
|
64
|
-
private
|
55
|
+
private validation_method
|
65
56
|
end
|
66
57
|
end
|
67
58
|
end
|
@@ -70,5 +61,23 @@ module PunctualDateSelect
|
|
70
61
|
base.extend(ClassMethods)
|
71
62
|
end
|
72
63
|
end
|
64
|
+
|
65
|
+
module Type
|
66
|
+
cast_method = defined?(ActiveModel::Type) ? :value_from_multiparameter_assignment : :cast_value
|
67
|
+
define_method cast_method do |value|
|
68
|
+
if value.kind_of?(PunctualDateSelect::DateHash)
|
69
|
+
value.try(:to_date) || value
|
70
|
+
else
|
71
|
+
super(value)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
73
75
|
end
|
74
76
|
ActiveRecord::Base.send(:include, PunctualDateSelect::Model)
|
77
|
+
if defined?(ActiveModel::Type)
|
78
|
+
ActiveModel::Type::Date.send(:prepend, PunctualDateSelect::Type)
|
79
|
+
ActiveModel::Type::DateTime.send(:prepend, PunctualDateSelect::Type)
|
80
|
+
else
|
81
|
+
ActiveRecord::Type::Date.send(:prepend, PunctualDateSelect::Type)
|
82
|
+
ActiveRecord::Type::DateTime.send(:prepend, PunctualDateSelect::Type)
|
83
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: punctual_date_select
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nay3
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|