unidom-common 1.4 → 1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +165 -74
- data/app/models/unidom/common/concerns/model_extension.rb +17 -0
- data/lib/unidom/common/version.rb +1 -1
- 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: 1e44a8b8ccece3288519276076c2131e12741b95
|
4
|
+
data.tar.gz: 9b3ae6a040a4049c4fbfdaf933e6f20fa38a5ff6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 078a2f58cc191dd3bafe0b54ba141314b092f3868d9f9e3a870a4f4f48f9c7ad409ed24110498775e633dbef8387649b3c5d770ee3ce29dac597f31c0b66844b
|
7
|
+
data.tar.gz: f24e6d3d7a65872cd0910b3aa7c098a1cbb2e1b7d41e84b50f86f0bd15e5dc351920de85eeed7b3b33fdc4895204332503cf33f37d6935d94b5bd0fc4efe782f
|
data/README.md
CHANGED
@@ -109,6 +109,61 @@ Project.notation_boolean_column_where(:enabled, true) # All enabled projects
|
|
109
109
|
|
110
110
|
|
111
111
|
|
112
|
+
## Exact Columns
|
113
|
+
|
114
|
+
```ruby
|
115
|
+
# db/migrate/YYYYMMDDHHMMSS_create_people.rb
|
116
|
+
class CreatePeople < ActiveRecord::Migration[5.0]
|
117
|
+
|
118
|
+
def change
|
119
|
+
|
120
|
+
create_table :people, id: :uuid do |t|
|
121
|
+
|
122
|
+
t.string :name, null: false, default: '', limit: 200
|
123
|
+
|
124
|
+
t.string :passport_number, null: false, default: nil, limit: 200
|
125
|
+
|
126
|
+
t.binary :identification_number_exact_signature, null: false, default: nil, limit: 80
|
127
|
+
t.binary :passport_number_exact_signature, null: false, default: nil, limit: 80
|
128
|
+
|
129
|
+
t.column :state, 'char(1)', null: false, default: 'C'
|
130
|
+
t.datetime :opened_at, null: false, default: Time.utc(1970)
|
131
|
+
t.datetime :closed_at, null: false, default: Time.utc(3000)
|
132
|
+
t.boolean :defunct, null: false, default: false
|
133
|
+
t.jsonb :notation, null: false, default: {}
|
134
|
+
|
135
|
+
t.timestamps null: false
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
add_index :people, :identification_number_exact_signature, unique: true
|
140
|
+
add_index :people, :passport_number_exact_signature, unique: true
|
141
|
+
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
145
|
+
|
146
|
+
# app/models/person.rb
|
147
|
+
class Person < ApplicationRecord
|
148
|
+
|
149
|
+
include Unidom::Common::Concerns::ModelExtension
|
150
|
+
|
151
|
+
attr_accessor :identification_number
|
152
|
+
# The identification number is not stored. Only the exact signature is stored like password.
|
153
|
+
exact_column :identification_number, :passport_number
|
154
|
+
# The passport number is stored in the clear text format.
|
155
|
+
|
156
|
+
end
|
157
|
+
|
158
|
+
# in any controller or rails console:
|
159
|
+
person = Person.new name: 'Tim', identification_number: '11010119901231001X', passport_number: 'E00000000'
|
160
|
+
person.save!
|
161
|
+
Person.identification_number_is('11010119901231001X').first==person # true
|
162
|
+
Person.passport_number_is('E00000000').first==person # true
|
163
|
+
```
|
164
|
+
|
165
|
+
|
166
|
+
|
112
167
|
## Numeration
|
113
168
|
|
114
169
|
```ruby
|
@@ -359,212 +414,248 @@ hex_digested == Unidom::Common::Numeration.hex digested # true
|
|
359
414
|
<tbody>
|
360
415
|
|
361
416
|
<tr>
|
362
|
-
<td
|
417
|
+
<td><a href="https://github.com/topbitdu/unidom-common">unidom-common</a></td>
|
363
418
|
<td>200001DDHHMMSS</td>
|
364
419
|
<td>-</td>
|
365
420
|
<td>The Common domain model engine includes the common models. 常用领域模型引擎包括一些常用的模型。</td>
|
366
421
|
</tr>
|
367
422
|
|
368
423
|
<tr>
|
369
|
-
<td
|
424
|
+
<td><a href="https://github.com/topbitdu/unidom-visitor">unidom-visitor</a></td>
|
370
425
|
<td>200002DDHHMMSS</td>
|
371
426
|
<td>
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
427
|
+
<ul>
|
428
|
+
<li>Identificating</li>
|
429
|
+
<li>Authenticating</li>
|
430
|
+
<li>Recognization</li>
|
431
|
+
<li>User</li>
|
432
|
+
<li>Guest</li>
|
433
|
+
<li>Password</li>
|
434
|
+
<ul>
|
378
435
|
</td>
|
379
436
|
<td>The Visitor domain model engine includes Identificating, Authenticating, Recognization, Visitor (User & Guest), and Password models. 访问者领域模型引擎包括身份标识、身份鉴别、身份识别、访问者(用户和游客)、密码的模型。</td>
|
380
437
|
</tr>
|
381
438
|
|
382
439
|
<tr>
|
383
|
-
<td
|
440
|
+
<td><a href="https://github.com/topbitdu/unidom-category">unidom-category</a></td>
|
384
441
|
<td>200003DDHHMMSS</td>
|
385
442
|
<td>
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
443
|
+
<ul>
|
444
|
+
<li>Category</li>
|
445
|
+
<li>Categorizing</li>
|
446
|
+
<li>Category Rollup</li>
|
447
|
+
<li>Category Associating</li>
|
448
|
+
<ul>
|
390
449
|
</td>
|
391
450
|
<td>The Category domain model engine includes Category and its relative models. 类别领域模型引擎包括类别及其相关的模型。</td>
|
392
451
|
</tr>
|
393
452
|
|
394
453
|
<tr>
|
395
|
-
<td
|
454
|
+
<td><a href="https://github.com/topbitdu/unidom-authorization">unidom-authorization</a></td>
|
396
455
|
<td>200004DDHHMMSS</td>
|
397
456
|
<td>
|
398
|
-
|
399
|
-
|
457
|
+
<ul>
|
458
|
+
<li>Permission</li>
|
459
|
+
<li>Authorizing</li>
|
460
|
+
<ul>
|
400
461
|
</td>
|
401
462
|
<td>The Authorization domain model engine includes the Permission and Authorizing models. 授权领域模型引擎包括权限、授权的模型。</td>
|
402
463
|
</tr>
|
403
464
|
|
404
465
|
<tr>
|
405
|
-
<td
|
466
|
+
<td><a href="https://github.com/topbitdu/unidom-action">unidom-action</a></td>
|
406
467
|
<td>200005DDHHMMSS</td>
|
407
468
|
<td>
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
469
|
+
<ul>
|
470
|
+
<li>Reason</li>
|
471
|
+
<li>State Transition</li>
|
472
|
+
<li>Obsolescing</li>
|
473
|
+
<li>Acting</li>
|
474
|
+
</ul>
|
412
475
|
</td>
|
413
|
-
<td>The Action domain model engine includes the Reason, State Transition,
|
476
|
+
<td>The Action domain model engine includes the Reason, State Transition, Obsolescing, and the Acting models. 审计领域模型引擎包括原因、状态迁移、废弃和行为日志的模型。</td>
|
414
477
|
</tr>
|
415
478
|
|
416
479
|
<tr>
|
417
|
-
<td
|
480
|
+
<td><a href="https://github.com/topbitdu/unidom-standard">unidom-standard</a></td>
|
418
481
|
<td>200006DDHHMMSS</td>
|
419
482
|
<td>
|
420
|
-
|
421
|
-
|
483
|
+
<ul>
|
484
|
+
<li>Standard</li>
|
485
|
+
<li>Standard Associating</li>
|
486
|
+
</ul>
|
422
487
|
</td>
|
423
488
|
<td>The Standard domain model engine includes the Standard model and the Standard Associating model. 标准领域模型引擎包括行为标准和标准关联的模型。</td>
|
424
489
|
</tr>
|
425
490
|
|
426
491
|
|
427
492
|
<tr>
|
428
|
-
<td
|
493
|
+
<td><a href="https://github.com/topbitdu/unidom-party">unidom-party</a></td>
|
429
494
|
<td>200101DDHHMMSS</td>
|
430
495
|
<td>
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
496
|
+
<ul>
|
497
|
+
<li>Person</li>
|
498
|
+
<li>Shop</li>
|
499
|
+
<li>Company</li>
|
500
|
+
<li>Government Agency</li>
|
501
|
+
<li>Party Relation</li>
|
502
|
+
</ul>
|
436
503
|
</td>
|
437
504
|
<td>The Party domain model engine includes the Person, Shop, Company, Government Agency, and the Party Relation models. 参与者领域模型引擎包括个人、店铺、公司、政府机构、参与者关系的模型。</td>
|
438
505
|
</tr>
|
439
506
|
|
440
507
|
<tr>
|
441
|
-
<td
|
508
|
+
<td><a href="https://github.com/topbitdu/unidom-certificate">unidom-certificate</a></td>
|
442
509
|
<td>200102DDHHMMSS</td>
|
443
510
|
<td>
|
444
|
-
|
511
|
+
<ul>
|
512
|
+
<li>Certificating</li>
|
513
|
+
</ul>
|
445
514
|
</td>
|
446
515
|
<td>The Certificate domain model engine includes the Certificating model.
|
447
516
|
证书领域模型引擎包括证书认证的模型。</td>
|
448
517
|
</tr>
|
449
518
|
|
450
519
|
<tr>
|
451
|
-
<td
|
520
|
+
<td><a href="https://github.com/topbitdu/unidom-contact">unidom-contact</a></td>
|
452
521
|
<td>200103DDHHMMSS</td>
|
453
522
|
<td>
|
454
|
-
|
455
|
-
|
523
|
+
<ul>
|
524
|
+
<li>Contact Subscription</li>
|
525
|
+
<li>Email Address</li>
|
526
|
+
</ul>
|
456
527
|
</td>
|
457
528
|
<td>The Contact domain model engine includes the Contact Subscription and Email Address models. 联系方式领域模型引擎包括联系方式订阅和电子邮箱地址的模型。</td>
|
458
529
|
</tr>
|
459
530
|
|
460
531
|
<tr>
|
461
|
-
<td
|
532
|
+
<td><a href="https://github.com/topbitdu/unidom-geo">unidom-geo</a></td>
|
462
533
|
<td>200104DDHHMMSS</td>
|
463
534
|
<td>
|
464
|
-
|
465
|
-
|
535
|
+
<ul>
|
536
|
+
<li>Location</li>
|
537
|
+
<li>Locating</li>
|
538
|
+
</ul>
|
466
539
|
</td>
|
467
540
|
<td>The Geo domain model engine includes the Location and Locating models. 地理领域模型引擎包括位置和定位的模型。</td>
|
468
541
|
</tr>
|
469
542
|
|
470
543
|
|
471
544
|
<tr>
|
472
|
-
<td
|
545
|
+
<td><a href="https://github.com/topbitdu/unidom-article_number">unidom-article_number</a></td>
|
473
546
|
<td>200201DDHHMMSS</td>
|
474
547
|
<td>
|
475
|
-
|
476
|
-
|
477
|
-
|
548
|
+
<ul>
|
549
|
+
<li>Marking</li>
|
550
|
+
<li>EAN 13 Barcode</li>
|
551
|
+
<li>EAN 8 Barcode</li>
|
552
|
+
</ul>
|
478
553
|
</td>
|
479
554
|
<td>The Article Number domain model engine includes Marking, EAN-13, and EAN-8 models. 物品编码领域模型引擎包括打码、EAN-13和EAN-8的模型。</td>
|
480
555
|
</tr>
|
481
556
|
|
482
557
|
<tr>
|
483
|
-
<td
|
558
|
+
<td><a href="https://github.com/topbitdu/unidom-product">unidom-product</a></td>
|
484
559
|
<td>200202DDHHMMSS</td>
|
485
560
|
<td>
|
486
|
-
|
487
|
-
|
561
|
+
<ul>
|
562
|
+
<li>Product</li>
|
563
|
+
<li>Product Associating</li>
|
564
|
+
</ul>
|
488
565
|
</td>
|
489
566
|
<td>The Product domain model engine includes Product and Produt Associating models. 产品领域模型引擎包括产品和产品关联的模型。</td>
|
490
567
|
</tr>
|
491
568
|
|
492
569
|
<tr>
|
493
|
-
<td
|
570
|
+
<td><a href="https://github.com/topbitdu/unidom-price">unidom-price</a></td>
|
494
571
|
<td>200203DDHHMMSS</td>
|
495
572
|
<td>
|
496
|
-
|
573
|
+
<ul>
|
574
|
+
<li>Price</li>
|
575
|
+
</ul>
|
497
576
|
</td>
|
498
577
|
<td>The Price domain model engine includes Price and its relative models. 价格领域模型引擎包括定价及其相关的模型。</td>
|
499
578
|
</tr>
|
500
579
|
|
501
580
|
<tr>
|
502
|
-
<td
|
581
|
+
<td><a href="https://github.com/topbitdu/unidom-shopping">unidom-shopping</a></td>
|
503
582
|
<td>200205DDHHMMSS</td>
|
504
583
|
<td>
|
505
|
-
|
506
|
-
|
584
|
+
<ul>
|
585
|
+
<li>Shopping Cart</li>
|
586
|
+
<li>Shopping Item</li>
|
587
|
+
</ul>
|
507
588
|
</td>
|
508
589
|
<td>The Shopping domain model engine includes Shopping Cart and Shopping Item models. 购物领域模型引擎包括购物车和购物项的模型。</td>
|
509
590
|
</tr>
|
510
591
|
|
511
592
|
<tr>
|
512
|
-
<td
|
593
|
+
<td><a href="https://github.com/topbitdu/unidom-order">unidom-order</a></td>
|
513
594
|
<td>200206DDHHMMSS</td>
|
514
595
|
<td>
|
515
|
-
|
516
|
-
|
517
|
-
|
596
|
+
<ul>
|
597
|
+
<li>Order</li>
|
598
|
+
<li>Order Item</li>
|
599
|
+
<li>Order Adjustment</li>
|
600
|
+
</ul>
|
518
601
|
</td>
|
519
602
|
<td>The Order domain model engine includes Order, Order Item, and Order Adjustment models. 订单领域模型引擎包括订单、订单项和订单调整的模型。</td>
|
520
603
|
</tr>
|
521
604
|
|
522
605
|
<tr>
|
523
|
-
<td
|
606
|
+
<td><a href="https://github.com/topbitdu/unidom-inventory">unidom-inventory</a></td>
|
524
607
|
<td>200209DDHHMMSS</td>
|
525
608
|
<td>
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
609
|
+
<ul>
|
610
|
+
<li>Serialized Inventory Item</li>
|
611
|
+
<li>Grouped Inventory Item</li>
|
612
|
+
<li>Lot</li>
|
613
|
+
<li>Inventory Item Variance</li>
|
614
|
+
</ul>
|
530
615
|
</td>
|
531
616
|
<td>The Inventory domain model engine includes the Serialized Inventory Item, the Grouped Inventory Item, the Lot, and the Inventory Item Variance models. 库存领域模型引擎包括序列化库存项、分组库存项、批量和库存项变化的模型。</td>
|
532
617
|
</tr>
|
533
618
|
|
534
619
|
<tr>
|
535
|
-
<td
|
620
|
+
<td><a href="https://github.com/topbitdu/unidom-shipment">unidom-shipment</a></td>
|
536
621
|
<td>200210DDHHMMSS</td>
|
537
622
|
<td>
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
623
|
+
<ul>
|
624
|
+
<li>Shipment</li>
|
625
|
+
<li>Shipment Item</li>
|
626
|
+
<li>Shipment Package</li>
|
627
|
+
<li>Shipment Package Item</li>
|
628
|
+
<li>Shipment Receipt</li>
|
629
|
+
</ul>
|
543
630
|
</td>
|
544
631
|
<td>The Shipment domain model engine includes the Shipment, Shipment Item, Shipment Package, Shipment Package Item, and Shipment Receipt model. 装运领域模型引擎包括装运、装运项、装运包裹、装运包裹项、装运收据的模型。</td>
|
545
632
|
</tr>
|
546
633
|
|
547
634
|
|
548
635
|
<tr>
|
549
|
-
<td
|
636
|
+
<td><a href="https://github.com/topbitdu/unidom-position">unidom-position</a></td>
|
550
637
|
<td>200402DDHHMMSS</td>
|
551
638
|
<td>
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
639
|
+
<ul>
|
640
|
+
<li>Occupation</li>
|
641
|
+
<li>Position</li>
|
642
|
+
<li>Post</li>
|
643
|
+
<li>Position Reporting Structure</li>
|
644
|
+
</ul>
|
556
645
|
</td>
|
557
646
|
<td>The Position domain model engine includes the Occupation, Position, Post, and Position Reporting Structure models.
|
558
647
|
职位领域模型引擎包括职业、职位、岗位及岗位报告关系模型。</td>
|
559
648
|
</tr>
|
560
649
|
|
561
650
|
<tr>
|
562
|
-
<td
|
651
|
+
<td><a href="https://github.com/topbitdu/unidom-accession">unidom-accession</a></td>
|
563
652
|
<td>200405DDHHMMSS</td>
|
564
653
|
<td>
|
565
|
-
|
654
|
+
<ul>
|
655
|
+
<li>Post Fulfillment</li>
|
656
|
+
</ul>
|
566
657
|
</td>
|
567
|
-
<td>The
|
658
|
+
<td>The Accession domain model engine includes the Post Fulfillment and its relative models. 就职领域模型引擎包括岗位履行及其相关的模型。</td>
|
568
659
|
</tr>
|
569
660
|
|
570
661
|
|
@@ -178,10 +178,27 @@ module Unidom::Common::Concerns::ModelExtension
|
|
178
178
|
end
|
179
179
|
end
|
180
180
|
|
181
|
+
def exact_column(*names)
|
182
|
+
names.each do |name|
|
183
|
+
name = name.to_s
|
184
|
+
instance_eval do
|
185
|
+
scope :"#{name}_is", ->(value) { where "#{name}_exact_signature" => exact_signature(self, name, value) }
|
186
|
+
before_save do
|
187
|
+
send "#{name}_exact_signature=", self.class.exact_signature(self.class, name, send(name))
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
181
193
|
def assert_present!(name, value)
|
182
194
|
raise ArgumentError.new("The #{name} argument is required.") if value.blank?
|
183
195
|
end
|
184
196
|
|
197
|
+
def exact_signature(klass, name, value)
|
198
|
+
text = "#{Rails.application.secrets[:secret_key_base]}@#{Rails.root}/#{klass.table_name}##{name}=#{value}"
|
199
|
+
"#{Digest::MD5.digest(text)}#{Digest::SHA512.digest(text)}"
|
200
|
+
end
|
201
|
+
|
185
202
|
end
|
186
203
|
|
187
204
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unidom-common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.5'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Topbit Du
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|