acts_as_having_string_id 0.2.5 → 0.2.6
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 +4 -4
- data/README.md +14 -10
- data/lib/acts_as_having_string_id.rb +12 -2
- data/lib/acts_as_having_string_id/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10da8a58d8b3da26d869dba464bae672c3361f9c
|
4
|
+
data.tar.gz: 3b0cfe3941f23bbc3f4994dfec192332258c920b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e133a4799d234f105368aca15a92da63447fb7c3c0eeb12bac04330e923d3741ae89ac487377b9ad5696a81420ff34b60690b069a1e3f913cb664439fa6934b
|
7
|
+
data.tar.gz: 94875370108b2cc63ab3a0d78c24f08ebbecf0e5d0312a7a1b5bc51c4e9d1655239c587619c9f997400e2cea312e3377220ce60684a540925932925266994674
|
data/README.md
CHANGED
@@ -60,10 +60,12 @@ First, set up your `secrets.yml`:
|
|
60
60
|
|
61
61
|
Then, call the method in your model class, after any relations to other models:
|
62
62
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
63
|
+
```ruby
|
64
|
+
class MyModel < ApplicationRecord
|
65
|
+
has_many :my_other_model
|
66
|
+
acts_as_having_string_id
|
67
|
+
end
|
68
|
+
```
|
67
69
|
|
68
70
|
The id of your model will now not be an int, but rather an instance of `ActsAsHavingStringId::StringId`. As an example:
|
69
71
|
|
@@ -89,13 +91,15 @@ In all associated models, foreign keys to your model will also be this new type
|
|
89
91
|
|
90
92
|
Then, for exposing your string ID, make sure to always use `id.to_s`. For example, if you're using [ActiveModelSerializers](https://github.com/rails-api/active_model_serializers):
|
91
93
|
|
92
|
-
|
93
|
-
|
94
|
+
```ruby
|
95
|
+
class UserSerializer < ActiveModel::Serializer
|
96
|
+
attributes :id, :name
|
94
97
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
98
|
+
def id
|
99
|
+
object.id.to_s
|
100
|
+
end
|
101
|
+
end
|
102
|
+
```
|
99
103
|
|
100
104
|
You can get the string representation of an ID from a class without having the instance
|
101
105
|
|
@@ -9,15 +9,25 @@ module ActsAsHavingStringId
|
|
9
9
|
module ClassMethods
|
10
10
|
def acts_as_having_string_id(options = {})
|
11
11
|
class_eval do
|
12
|
+
def self.acts_as_having_string_id?
|
13
|
+
# This class does act as having string id
|
14
|
+
true
|
15
|
+
end
|
16
|
+
|
12
17
|
attrib_type = ActsAsHavingStringId::StringId::Type.new(self)
|
13
18
|
attribute :id, attrib_type
|
14
19
|
|
15
20
|
self.reflections.each_value do |r|
|
16
|
-
|
17
|
-
unless r.is_a? ActiveRecord::Reflection::ThroughReflection
|
21
|
+
if r.is_a?(ActiveRecord::Reflection::HasManyReflection)
|
18
22
|
r.klass.class_eval do
|
19
23
|
attribute r.foreign_key.to_sym, attrib_type
|
20
24
|
end
|
25
|
+
elsif r.is_a?(ActiveRecord::Reflection::BelongsToReflection)
|
26
|
+
if r.klass.respond_to?(:acts_as_having_string_id?) && \
|
27
|
+
r.klass.acts_as_having_string_id?
|
28
|
+
foreign_attrib_type = ActsAsHavingStringId::StringId::Type.new(r.klass)
|
29
|
+
attribute r.foreign_key.to_sym, foreign_attrib_type
|
30
|
+
end
|
21
31
|
end
|
22
32
|
end
|
23
33
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_having_string_id
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Magnus Hult
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
108
|
version: '0'
|
109
109
|
requirements: []
|
110
110
|
rubyforge_project:
|
111
|
-
rubygems_version: 2.
|
111
|
+
rubygems_version: 2.5.1
|
112
112
|
signing_key:
|
113
113
|
specification_version: 4
|
114
114
|
summary: Makes a model accept and expose a seemingly random string id
|