public_uid 2.1.0 → 2.2.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 +4 -4
- data/.travis.yml +5 -1
- data/README.md +51 -4
- data/lib/public_uid/model.rb +9 -0
- data/lib/public_uid/set_public_uid.rb +1 -1
- data/lib/public_uid/version.rb +1 -1
- data/test/models/custom_public_uid_column_test.rb +22 -1
- data/test/models/model_with_generator_defaults_test.rb +22 -1
- data/test/models/model_with_public_uid_concern_test.rb +20 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9f535dd58ffefeceb1c162b838cd6bfc152d12d5d0c3036ccf3377d15a5d25f
|
4
|
+
data.tar.gz: a65e4856004a370828706d678a55be3a5940ff7f5a288ba8a4e5849060bc4da4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7ae3ce54c0dfaa21d192937c9c6aec75da1aaae789a2261a55dcfabcfc3e740c43b7ae646f2ca601d9139008108e69d6635eef058c35c18b135496d68a79d07
|
7
|
+
data.tar.gz: b4e1daa515802166ea148c14a1fa3352f871f7a7725e77e74af37ea9d726e365545ad398e23c4e08a7dce06c38f0741513ed12a7ca4c8fdc53b37cdcfe2cf1ed
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -57,14 +57,28 @@ Create database column for public unique ID.
|
|
57
57
|
class AddPublicUidToUsers < ActiveRecord::Migration
|
58
58
|
def change
|
59
59
|
add_column :users, :public_uid, :string
|
60
|
-
add_index :users, :public_uid
|
60
|
+
add_index :users, :public_uid, unique: true
|
61
|
+
end
|
62
|
+
end
|
63
|
+
```
|
64
|
+
|
65
|
+
or if you are creating table
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
class CreateEntries < ActiveRecord::Migration[7.1]
|
69
|
+
def change
|
70
|
+
create_table :entries do |t|
|
71
|
+
# ...
|
72
|
+
t.string :public_uid, index: { unique: true }
|
73
|
+
# ...
|
74
|
+
end
|
61
75
|
end
|
62
76
|
end
|
63
77
|
```
|
64
78
|
|
65
79
|
### Step 2a - Using Rails concern
|
66
80
|
|
67
|
-
> a.k.a - the easy way for Rails
|
81
|
+
> a.k.a - the easy way for Rails (availible since version 2.1.0)
|
68
82
|
|
69
83
|
```ruby
|
70
84
|
class User < ActiveRecord::Base
|
@@ -72,6 +86,28 @@ class User < ActiveRecord::Base
|
|
72
86
|
end
|
73
87
|
```
|
74
88
|
|
89
|
+
Example:
|
90
|
+
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
user = User.create
|
94
|
+
user.public_uid
|
95
|
+
# => "xxxxxxxx"
|
96
|
+
|
97
|
+
user.to_param
|
98
|
+
# => "xxxxxxxx"
|
99
|
+
|
100
|
+
User.find_puid('xxxxxxxx')
|
101
|
+
# => <#User ...>
|
102
|
+
User.find_puid('not_existing')
|
103
|
+
# => nil
|
104
|
+
|
105
|
+
User.find_puid!('xxxxxxxx')
|
106
|
+
# => <#User ...>
|
107
|
+
User.find_puid!('not_existing')
|
108
|
+
# PublicUid::RecordNotFound (User 'not_existing' not found)
|
109
|
+
```
|
110
|
+
|
75
111
|
This will automatically:
|
76
112
|
|
77
113
|
* assumes your model has `public_uid` column and generate public_uid value for you
|
@@ -85,6 +121,8 @@ If you need more customization please follow **Step 2b** instead
|
|
85
121
|
|
86
122
|
### Step 2b - Using manual generate method
|
87
123
|
|
124
|
+
> a.k.a bit harder than `2.a` but more flexible way for Rails
|
125
|
+
|
88
126
|
Tell your model to generate the public identifier
|
89
127
|
|
90
128
|
```ruby
|
@@ -111,7 +149,7 @@ Then you can do more clever things like having urls based on `public_uid` and `t
|
|
111
149
|
class User < ActiveRecord::Base
|
112
150
|
generate_public_uid
|
113
151
|
|
114
|
-
def self.
|
152
|
+
def self.find_puid(param)
|
115
153
|
find_by! public_uid: param.split('-').first
|
116
154
|
end
|
117
155
|
|
@@ -124,7 +162,7 @@ end
|
|
124
162
|
class UsersController < ActionController::Base
|
125
163
|
# ...
|
126
164
|
def show
|
127
|
-
@user = User.
|
165
|
+
@user = User.find_puid(param[:id])
|
128
166
|
# ...
|
129
167
|
end
|
130
168
|
# ...
|
@@ -357,3 +395,12 @@ If anyone want to see public_uid v 2.0 to support other data mappers (e.g. mongo
|
|
357
395
|
|
358
396
|
Sorry for any inconvenience
|
359
397
|
|
398
|
+
##### 2022-11-03
|
399
|
+
|
400
|
+
Version 2.2.0 released
|
401
|
+
|
402
|
+
|
403
|
+
`model.dup` will now not copy the public_uid value (same as `model.id` )
|
404
|
+
|
405
|
+
more: https://github.com/equivalent/public_uid/pull/21
|
406
|
+
|
data/lib/public_uid/model.rb
CHANGED
@@ -14,6 +14,15 @@ module PublicUid
|
|
14
14
|
pub_uid.generate self.class.public_uid_generator
|
15
15
|
pub_uid.set
|
16
16
|
end
|
17
|
+
|
18
|
+
def initialize_dup(*)
|
19
|
+
super
|
20
|
+
_clear_public_uid_column
|
21
|
+
end
|
22
|
+
|
23
|
+
def _clear_public_uid_column
|
24
|
+
self.send("#{self.class.public_uid_column}=", nil)
|
25
|
+
end
|
17
26
|
end
|
18
27
|
|
19
28
|
module ClassMethods
|
data/lib/public_uid/version.rb
CHANGED
@@ -3,7 +3,8 @@ require 'test_helper'
|
|
3
3
|
TestConf.orm_modules.each do |orm_module|
|
4
4
|
describe orm_module.description do
|
5
5
|
context 'Model with custom public uid column' do
|
6
|
-
let(:
|
6
|
+
let(:model_class) { "#{orm_module}::CustomPublicUidColumnModel".constantize }
|
7
|
+
let(:user) { model_class.new }
|
7
8
|
|
8
9
|
describe '#custom_uid' do
|
9
10
|
subject{ user.custom_uid }
|
@@ -31,6 +32,26 @@ TestConf.orm_modules.each do |orm_module|
|
|
31
32
|
it{ expect(subject.length).must_equal(8) }
|
32
33
|
end
|
33
34
|
end
|
35
|
+
|
36
|
+
describe '#dup' do
|
37
|
+
let(:user) { model_class.new(:custom_uid => 'abcdefg') }
|
38
|
+
|
39
|
+
it do
|
40
|
+
dup_user = user.dup
|
41
|
+
expect(user.custom_uid).must_equal('abcdefg')
|
42
|
+
expect(dup_user.custom_uid).must_equal(nil)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#clone' do
|
47
|
+
let(:user) { model_class.new(:custom_uid => 'abcdefg') }
|
48
|
+
|
49
|
+
it do
|
50
|
+
clone_user = user.clone
|
51
|
+
expect(user.custom_uid).must_equal('abcdefg')
|
52
|
+
expect(clone_user.custom_uid).must_equal('abcdefg')
|
53
|
+
end
|
54
|
+
end
|
34
55
|
end
|
35
56
|
end
|
36
57
|
end
|
@@ -3,7 +3,8 @@ require 'test_helper'
|
|
3
3
|
TestConf.orm_modules.each do |orm_module|
|
4
4
|
describe orm_module.description do
|
5
5
|
context 'Model with default generator' do
|
6
|
-
let(:
|
6
|
+
let(:model_class) { "#{orm_module}::ModelWithGeneratorDefaults".constantize }
|
7
|
+
let(:user) { model_class.new }
|
7
8
|
|
8
9
|
describe '#public_uid' do
|
9
10
|
subject{ user.public_uid }
|
@@ -31,6 +32,26 @@ TestConf.orm_modules.each do |orm_module|
|
|
31
32
|
it{ expect(subject.length).must_equal(8) }
|
32
33
|
end
|
33
34
|
end
|
35
|
+
|
36
|
+
describe '#dup' do
|
37
|
+
let(:user) { model_class.new(:public_uid => 'abcdefg') }
|
38
|
+
|
39
|
+
it do
|
40
|
+
dup_user = user.dup
|
41
|
+
expect(user.public_uid).must_equal('abcdefg')
|
42
|
+
expect(dup_user.public_uid).must_equal(nil)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#clone' do
|
47
|
+
let(:user) { model_class.new(:public_uid => 'abcdefg') }
|
48
|
+
|
49
|
+
it do
|
50
|
+
clone_user = user.clone
|
51
|
+
expect(user.public_uid).must_equal('abcdefg')
|
52
|
+
expect(clone_user.public_uid).must_equal('abcdefg')
|
53
|
+
end
|
54
|
+
end
|
34
55
|
end
|
35
56
|
end
|
36
57
|
end
|
@@ -44,6 +44,26 @@ TestConf.orm_modules.each do |orm_module|
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
47
|
+
|
48
|
+
describe '#dup' do
|
49
|
+
let(:user) { model_class.new(:public_uid => 'abcdefg') }
|
50
|
+
|
51
|
+
it do
|
52
|
+
dup_user = user.dup
|
53
|
+
expect(user.public_uid).must_equal('abcdefg')
|
54
|
+
expect(dup_user.public_uid).must_equal(nil)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '#clone' do
|
59
|
+
let(:user) { model_class.new(:public_uid => 'abcdefg') }
|
60
|
+
|
61
|
+
it do
|
62
|
+
clone_user = user.clone
|
63
|
+
expect(user.public_uid).must_equal('abcdefg')
|
64
|
+
expect(clone_user.public_uid).must_equal('abcdefg')
|
65
|
+
end
|
66
|
+
end
|
47
67
|
end
|
48
68
|
end
|
49
69
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: public_uid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Valent
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -165,7 +165,7 @@ homepage: https://github.com/equivalent/public_uid
|
|
165
165
|
licenses:
|
166
166
|
- MIT
|
167
167
|
metadata: {}
|
168
|
-
post_install_message:
|
168
|
+
post_install_message:
|
169
169
|
rdoc_options: []
|
170
170
|
require_paths:
|
171
171
|
- lib
|
@@ -180,8 +180,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
180
180
|
- !ruby/object:Gem::Version
|
181
181
|
version: '0'
|
182
182
|
requirements: []
|
183
|
-
rubygems_version: 3.
|
184
|
-
signing_key:
|
183
|
+
rubygems_version: 3.3.7
|
184
|
+
signing_key:
|
185
185
|
specification_version: 4
|
186
186
|
summary: Automatic generates public UID column
|
187
187
|
test_files:
|