jt-rails-address 1.2.0 → 1.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9457e91d9812c1d3812d8d9330d727a9a06d389f
4
- data.tar.gz: 5267c0a6b2d88c4c35008b0339ffe815407c11ac
3
+ metadata.gz: 8391f7cbcd928765fe623c06b9e12e38fe060e64
4
+ data.tar.gz: 613b2af0a4bb8a654916268a84bffba359cb523e
5
5
  SHA512:
6
- metadata.gz: 2a31312fd60c07b348943e82aa0329c144cad638a193ddadc0d62c862afb12ff36a36a35443f7bded4b9709e13514c995ec4bf351bffd640ab1f16d0dda8b707
7
- data.tar.gz: 6cd73f4c342a60388381313d45827127102154be399f7eb88b24d5e785ed8b2386c4a8a3c07ca2851883f4adfdd311d9f2db634dec5ff4ef5af2540f239578eb
6
+ metadata.gz: a9f7e8e8812b62d5b4811e82b3b287a372ebec027288ba2e9792079fe405a4ab288b064f0ddd24371459162e794669cc7437a59d9625264c4504e2725b79e2d1
7
+ data.tar.gz: f59265fb49fab32e9bd0b16bee376a9ff43866da895a8d9e9f2e09c1c2a6bcfe7641ad91ba70ffbc42ef3f5784bbf7a920d7551d75315566fc0e54738a068be5
data/README.md CHANGED
@@ -53,6 +53,8 @@ It will create all the fields you need for address management:
53
53
  - `lat`, GPS latitude
54
54
  - `lng`, GPS longitude
55
55
 
56
+ There are also `add_address` and `remove_address` methods for migrations.
57
+
56
58
  In your model:
57
59
  ```ruby
58
60
  class User < ActiveRecord::Base
@@ -82,6 +84,9 @@ In your HTML:
82
84
  <% end %>
83
85
  </div>
84
86
 
87
+ <!-- Optional, if this field is true, the address will be remove -->
88
+ <%= f.check_box :address_destroy %>
89
+
85
90
  <%= f.submit %>
86
91
 
87
92
  <% end %>
@@ -132,6 +137,12 @@ data = JT::Rails::Address.search("Eiffel Tower", "YOUR GOOGLE API KEY", {compone
132
137
 
133
138
  # Use the data retrieve from Google Maps API
134
139
  my_instance.load_address(:address, data)
140
+
141
+ # Use the set a nil all address fileds
142
+ my_instance.reset_address(:address)
143
+
144
+ # Use the set a nil all address fileds with HTML forms
145
+ my_instance.update({address_destroy: true})
135
146
  ```
136
147
 
137
148
  ## Author
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
3
3
  s.summary = "Postal addresses management in Ruby On Rails and Javascript"
4
4
  s.description = "JTRailsAddress simplify postal addresses management and geocoding with Google Maps in Ruby On Rails and Javascript."
5
5
  s.homepage = 'https://github.com/jonathantribouharet/jt-rails-address'
6
- s.version = '1.2.0'
6
+ s.version = '1.3.0'
7
7
  s.files = `git ls-files`.split("\n")
8
8
  s.require_paths = ['lib']
9
9
  s.authors = ['Jonathan TRIBOUHARET']
data/lib/validators.rb CHANGED
@@ -2,10 +2,28 @@ module JT::Rails::Address::Validators
2
2
 
3
3
  extend ActiveSupport::Concern
4
4
 
5
+ included do |base|
6
+
7
+ before_validation :check_if_reset_address
8
+
9
+ base.class_eval do
10
+
11
+ # jt_rails_address_fields is shared only by a class and its subclass
12
+ def self.jt_rails_address_fields
13
+ class_variable_set(:@@jt_rails_address_fields, []) if !class_variable_defined?(:@@jt_rails_address_fields)
14
+ class_variable_get(:@@jt_rails_address_fields)
15
+ end
16
+
17
+ end
18
+ end
19
+
5
20
  class_methods do
6
21
 
7
22
  def has_address(prefix, options = {})
8
23
  attr_accessor prefix
24
+ attr_accessor "#{prefix.to_s}_destroy"
25
+
26
+ jt_rails_address_fields << prefix.to_sym
9
27
 
10
28
  define_singleton_method("#{prefix}_fields") do
11
29
  fields = []
@@ -18,11 +36,22 @@ module JT::Rails::Address::Validators
18
36
 
19
37
  end
20
38
 
21
- def load_address(prefix, data)
22
- # Reset fields
39
+ def check_if_reset_address
40
+ for address_field in self.class.jt_rails_address_fields
41
+ if [1, true].include?(self.send("#{address_field}_destroy"))
42
+ reset_address(address_field)
43
+ end
44
+ end
45
+ end
46
+
47
+ def reset_address(prefix)
23
48
  for field in JT::Rails::Address.fields
24
49
  self["#{prefix}_#{field}"] = nil
25
50
  end
51
+ end
52
+
53
+ def load_address(prefix, data)
54
+ reset_address(prefix)
26
55
 
27
56
  for key, value in data
28
57
  self["#{prefix}_#{key}"] = value
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jt-rails-address
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan TRIBOUHARET
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-08 00:00:00.000000000 Z
11
+ date: 2016-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graticule