unidom-common 1.4 → 1.5
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 +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
|