referehencible 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/referehencible/version.rb +1 -1
- data/lib/referehencible.rb +13 -6
- 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: 0e249b8aeee7e472b5a9b497b8d49589483d3949
|
4
|
+
data.tar.gz: 0d260f6461ccdd619d2600add5211a837d436f91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89b0e301762a2e8d111275b448fe7528db28c5ab813115619ce80a87f181f9ac9dfc531eb5cf398d3d421eadfb9ef4a74d8487037eb48872c72120e19cd770cf
|
7
|
+
data.tar.gz: 4e19b7e9e7a0f5206224126322f2a76377bcc22edd9d1af8cf93f3098efcd54070f64d3c9e45960554d67d04011681f3c3b360c3e5c0a91f1571fbeb995f1f17
|
data/lib/referehencible.rb
CHANGED
@@ -2,11 +2,14 @@ require 'referehencible/version'
|
|
2
2
|
require 'securerandom'
|
3
3
|
|
4
4
|
module Referehencible
|
5
|
-
DEFAULT_LENGTH =
|
5
|
+
DEFAULT_LENGTH = 36
|
6
6
|
|
7
7
|
module ClassMethods
|
8
8
|
def referenced_by(*referenced_attributes)
|
9
|
-
default_options = {
|
9
|
+
default_options = {
|
10
|
+
length: DEFAULT_LENGTH,
|
11
|
+
type: :uuid,
|
12
|
+
}
|
10
13
|
|
11
14
|
referenced_attributes = referenced_attributes.each_with_object({}) do |referenced_attribute, transformed_attributes|
|
12
15
|
case referenced_attribute
|
@@ -25,12 +28,12 @@ module Referehencible
|
|
25
28
|
presence: true,
|
26
29
|
uniqueness: true,
|
27
30
|
format: {
|
28
|
-
with: /[a-f0-9]{#{options[:length]}}/ },
|
31
|
+
with: /[a-f0-9\-]{#{options[:length]}}/ },
|
29
32
|
length: {
|
30
33
|
is: options[:length] }
|
31
34
|
|
32
35
|
define_method(reference_attribute) do
|
33
|
-
|
36
|
+
send("generate_#{options[:type]}_guid", reference_attribute, options[:length] / 2)
|
34
37
|
end
|
35
38
|
|
36
39
|
define_singleton_method("by_#{reference_attribute}") do |guid_to_find|
|
@@ -39,15 +42,19 @@ module Referehencible
|
|
39
42
|
unknown_reference_object
|
40
43
|
end
|
41
44
|
|
42
|
-
after_initialize lambda {
|
45
|
+
after_initialize lambda { send("generate_#{options[:type]}_guid", reference_attribute, options[:length] / 2) }
|
43
46
|
end
|
44
47
|
|
45
48
|
private
|
46
49
|
|
47
|
-
define_method(:
|
50
|
+
define_method(:generate_hex_guid) do |reference_attribute, length|
|
48
51
|
read_attribute(reference_attribute) || write_attribute(reference_attribute, SecureRandom.hex(length))
|
49
52
|
end
|
50
53
|
|
54
|
+
define_method(:generate_uuid_guid) do |reference_attribute, length|
|
55
|
+
read_attribute(reference_attribute) || write_attribute(reference_attribute, SecureRandom.uuid)
|
56
|
+
end
|
57
|
+
|
51
58
|
define_singleton_method(:unknown_reference_object) do
|
52
59
|
return new unless respond_to?(:as_null_object)
|
53
60
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: referehencible
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jfelchner
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-06-
|
12
|
+
date: 2014-06-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|