jt-rails-tokenizable 1.0.1 → 1.0.2

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: b34b2d6dead2986b9fd125b8f80e9915c31d4509
4
- data.tar.gz: 05c49cd2b91dfe7f0dfc228312e3d980271f8c64
3
+ metadata.gz: d0eef98f324c8d4847fe31e46aaf7f6b9506df6a
4
+ data.tar.gz: 0f6bab123361ff47b53bb2bb5df11b0dd70a0d09
5
5
  SHA512:
6
- metadata.gz: a2998e9dcaf9ce5ef1f69206b39937b9f702bf80938d1c2fc52fb02eb69c246c8a9c4e875874d2654e20083910a6f299d0b67c689b44cf9b0067c203fb819570
7
- data.tar.gz: d8b2fa2cfa9845309616701d3b83f3f99c14e56bc6d360ed054b27ec874cef313ad2d5f28955996a09ab6dd847dd765e9b83357fa11a6a3e15bacb5d0b5b3651
6
+ metadata.gz: c7ff3069f7d45d0680200253d9149e0fa1ac4f3eb4ce236b1350e8ff100c5b0b189748f71b984e9e76fcd4bddca5b1b4ca1fd2c151c323981272bf7b22d0dede
7
+ data.tar.gz: 0747fde412cc75333e3049dfd9c1086d3c11d9ff66ca89c030cb5caab25ae40badc872ce5767ef673230b1ed95336653a149410b7cf1cba366e2ad942e7f59c2
data/README.md CHANGED
@@ -23,10 +23,13 @@ class User < ActiveRecord::Base
23
23
  include JT::Rails::Tokenizable
24
24
 
25
25
  tokenize :my_token_field
26
+ tokenize :another_token_field, size: 20, validations: false
26
27
  ...
27
28
  end
28
29
  ```
29
30
 
31
+ You change the length of the token (128 by default) and disable the presence and uniqueness validations.
32
+
30
33
  A new unique token is generated at the creation of the model. You can generate a new token with:
31
34
 
32
35
  ```ruby
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
3
3
  s.summary = "Token generation for ActiveRecord models in Ruby On Rails"
4
4
  s.description = "Generate tokens for ActiveRecord models in Ruby On Rails"
5
5
  s.homepage = 'https://github.com/jonathantribouharet/jt-rails-tokenizable'
6
- s.version = '1.0.1'
6
+ s.version = '1.0.2'
7
7
  s.files = `git ls-files`.split("\n")
8
8
  s.require_paths = ['lib']
9
9
  s.authors = ['Jonathan TRIBOUHARET']
@@ -10,29 +10,33 @@ module JT::Rails::Tokenizable
10
10
  before_validation :generate_tokens, on: :create
11
11
 
12
12
  mattr_accessor :jt_rails_token_fields do
13
- []
13
+ {}
14
14
  end
15
15
  end
16
16
 
17
17
  module ClassMethods
18
18
 
19
- def tokenize(field)
20
- jt_rails_token_fields << field
19
+ def tokenize(field, options = {})
20
+ jt_rails_token_fields[field.to_sym] = options
21
21
 
22
- validates field, presence: true, uniqueness: true
22
+ if options.fetch(:valiations, true)
23
+ validates field, presence: true, uniqueness: true
24
+ end
23
25
  end
24
26
 
25
27
  end
26
28
 
27
29
  def generate_tokens
28
- for field in jt_rails_token_fields
30
+ for field in jt_rails_token_fields.keys
29
31
  generate_new_token(field)
30
32
  end
31
33
  end
32
34
 
33
35
  def generate_new_token(field)
34
- self[field] = loop do
35
- random_token = SecureRandom.hex(128)
36
+ size = jt_rails_token_fields[field.to_sym].fetch(:size, 128)
37
+
38
+ self[field.to_sym] = loop do
39
+ random_token = SecureRandom.hex(size)
36
40
  break random_token unless self.class.exists?(field => random_token)
37
41
  end
38
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jt-rails-tokenizable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan TRIBOUHARET
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-08 00:00:00.000000000 Z
11
+ date: 2015-07-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Generate tokens for ActiveRecord models in Ruby On Rails
14
14
  email: jonathan.tribouharet@gmail.com