unidom-certificate-china 1.1.1 → 1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e6b3a88baf364abb85d86828daf0e4d2e3bbd151
4
- data.tar.gz: 2299f1495a23c74a4413ae21bc5d06e958e41c9f
3
+ metadata.gz: d68210d407c3089f6202c860ad025d92f32774c2
4
+ data.tar.gz: bedbe5bf19ce29d1e3ad71d7d0d4ed4ce647bc63
5
5
  SHA512:
6
- metadata.gz: c0fb8c37cab26f2b1b0613b2c172d05d0c3fc545ba0b46cfd20d12888ca1c4bc0dca36b40693b63f74cf3260ace295225a57422023201b5fe0c301ffa14b5bc3
7
- data.tar.gz: 13563bc8a078c30dd5de2642feca680edfee6652971d256cbccf9546311b9d4665746393519021b179dce5efc9e30946f7ca0060fe35bf742591d6425a76f589
6
+ metadata.gz: 2b542bd93325c5e00c606917c9d731eafeba22e3356eed1c6e0823d779bc4783d81ea3441c48049bf1678b2bb833032de7259328ec114be8afffaeaf0ad86b2e
7
+ data.tar.gz: 50407607004cc9d2e78727ecd1cbc5961dafec4e00c0dbe84db7613600953228ccc476465608078aa1dca48e39639a1f81c3c5feb274bee1006e85779c21908c
data/README.md CHANGED
@@ -2,26 +2,39 @@
2
2
 
3
3
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](http://opensource.org/licenses/MIT)
4
4
  [![Gem Version](https://badge.fury.io/rb/unidom-certificate-china.svg)](https://badge.fury.io/rb/unidom-certificate-china)
5
+ [![Dependency Status](https://gemnasium.com/badges/github.com/topbitdu/unidom-certificate-china.svg)](https://gemnasium.com/github.com/topbitdu/unidom-certificate-china)
5
6
 
6
7
  Unidom (UNIfied Domain Object Model) is a series of domain model engines. The China Certificate domain model engine includes Identity Card, Driving License, and Business License models.
7
8
  Unidom (统一领域对象模型)是一系列的领域模型引擎。中国证件领域模型引擎包括中国大陆的身份证、驾驶证、营业执照等模型。
8
9
 
10
+
11
+
9
12
  ## Recent Update
13
+
10
14
  Check out the [Road Map](ROADMAP.md) to find out what's the next.
11
15
  Check out the [Change Log](CHANGELOG.md) to find out what's new.
12
16
 
17
+
18
+
13
19
  ## Usage in Gemfile
20
+
14
21
  ```ruby
15
22
  gem 'unidom-certificate-china'
16
23
  ```
17
24
 
25
+
26
+
18
27
  ## Run the Database Migration
28
+
19
29
  ```shell
20
30
  rake db:migrate
21
31
  ```
22
32
  The migration versions start with 2001029156.
23
33
 
34
+
35
+
24
36
  ## Call the Model
37
+
25
38
  ```ruby
26
39
  identity_card = Unidom::Certificate::China::IdentityCard.identification_number_is('51010519801231123X').first_or_create(
27
40
  name: 'John',
@@ -44,18 +57,31 @@ Unidom::Certificate::China::BusinessLicense.registration_number_is('510105012345
44
57
  )
45
58
  ```
46
59
 
60
+
61
+
47
62
  ## Include the Concerns
63
+
48
64
  ```ruby
49
65
  include Unidom::Certificate::China::Concerns::AsBusinessLicenseCertificated
50
66
  include Unidom::Certificate::China::Concerns::AsIdentityCardCertificated
51
67
  ```
52
68
 
53
69
  ### As Business License Certificated
70
+
54
71
  The As Business License Certificated do the following tasks for the includer automatically:
55
- 1. Include the [As Certificated](http://https://github.com/topbitdu/unidom-certificated) concern
72
+ 1. Include the [As Certificated](http://https://github.com/topbitdu/unidom-certificated) concern
56
73
  2. Define the has_many :china_business_licenses macro as: ``has_many :china_business_licenses, through: :certificatings, source: :certification, source_type: 'Unidom::Certificate::China::BusinessLicense'``
57
74
 
58
75
  ### As Identity Card Certificated
76
+
59
77
  The As Identity Card Certificated do the following tasks for the includer automatically:
60
- 1. Include the [As Certificated](http://https://github.com/topbitdu/unidom-certificated) concern
78
+ 1. Include the [As Certificated](http://https://github.com/topbitdu/unidom-certificated) concern
61
79
  2. Define the has_many :china_identity_cards macro as: ``has_many :china_identity_cards, through: :certificatings, source: :certification, source_type: 'Unidom::Certificate::China::IdentityCard'``
80
+
81
+
82
+
83
+ ## Validator
84
+
85
+ ```ruby
86
+ validates :identification_number, presence: true, identification_number: true
87
+ ```
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ RDoc::Task.new(:rdoc) do |rdoc|
10
10
  rdoc.rdoc_dir = 'rdoc'
11
11
  rdoc.title = 'Unidom Certificate China'
12
12
  rdoc.options << '--line-numbers'
13
- rdoc.rdoc_files.include('README.rdoc')
13
+ rdoc.rdoc_files.include('README.md')
14
14
  rdoc.rdoc_files.include('lib/**/*.rb')
15
15
  end
16
16
 
@@ -20,5 +20,5 @@ load 'rails/tasks/statistics.rake'
20
20
 
21
21
 
22
22
 
23
- Bundler::GemHelper.install_tasks
23
+ require 'bundler/gem_tasks'
24
24
 
@@ -0,0 +1,2 @@
1
+ //= link_directory ../javascripts/unidom/certificate/china .js
2
+ //= link_directory ../stylesheets/unidom/certificate/china .css
@@ -5,7 +5,7 @@
5
5
  // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
6
  //
7
7
  // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
- // compiled file.
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
9
  //
10
10
  // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
11
  // about supported directives.
@@ -6,9 +6,9 @@
6
6
  * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
7
  *
8
8
  * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
- * compiled file so the styles you add here take precedence over styles defined in any styles
10
- * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
- * file per style scope.
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
12
  *
13
13
  *= require_self
14
14
  */
@@ -1,4 +1,6 @@
1
1
  module China
2
2
  class ApplicationController < ActionController::Base
3
- end
3
+ protect_from_forgery with: :exception
4
+ end
5
+
4
6
  end
@@ -0,0 +1,2 @@
1
+ class Unidom::Certificate::China::ApplicationJob < ActiveJob::Base
2
+ end
@@ -0,0 +1,4 @@
1
+ class Unidom::Certificate::China::ApplicationMailer < ActionMailer::Base
2
+ default from: 'from@example.com'
3
+ layout 'mailer'
4
+ end
@@ -0,0 +1,3 @@
1
+ class Unidom::Certificate::China::ApplicationRecord < ActiveRecord::Base
2
+ self.abstract_class = true
3
+ end
@@ -1,6 +1,6 @@
1
1
  # Business License 是中国的工商营业执照。
2
2
 
3
- class Unidom::Certificate::China::BusinessLicense < ActiveRecord::Base
3
+ class Unidom::Certificate::China::BusinessLicense < Unidom::Certificate::China::ApplicationRecord
4
4
 
5
5
  FORMAT_VALIDATION_REGEX = /\A\d{15}\z/
6
6
 
@@ -4,7 +4,7 @@ module Unidom::Certificate::China::Concerns::AsBusinessLicenseCertificated
4
4
 
5
5
  include Unidom::Certificate::Concerns::AsCertificated
6
6
 
7
- self.included do |includer|
7
+ included do |includer|
8
8
 
9
9
  has_many :china_business_licenses, through: :certificatings, source: :certification, source_type: 'Unidom::Certificate::China::BusinessLicense'
10
10
 
@@ -4,7 +4,7 @@ module Unidom::Certificate::China::Concerns::AsIdentityCardCertificated
4
4
 
5
5
  include Unidom::Certificate::Concerns::AsCertificated
6
6
 
7
- self.included do |includer|
7
+ included do |includer|
8
8
 
9
9
  has_many :china_identity_cards, through: :certificatings, source: :certification, source_type: 'Unidom::Certificate::China::IdentityCard'
10
10
 
@@ -1,6 +1,6 @@
1
1
  # Identity Card 是中国身份证。
2
2
 
3
- class Unidom::Certificate::China::IdentityCard < ActiveRecord::Base
3
+ class Unidom::Certificate::China::IdentityCard < Unidom::Certificate::China::ApplicationRecord
4
4
 
5
5
  FORMAT_VALIDATION_REGEX = /\A\d{17}[\dx]\z/i
6
6
 
@@ -18,10 +18,12 @@ class Unidom::Certificate::China::IdentityCard < ActiveRecord::Base
18
18
 
19
19
  scope :identification_number_is, ->(identification_number) { where identification_number: identification_number }
20
20
 
21
- before_validation do
22
- self.identification_number = self.identification_number.upcase
23
- self.birth_date = Date.parse "#{identification_number[6..9]}-#{identification_number[10..11]}-#{identification_number[12..13]}"
24
- self.gender_code = identification_number[16].to_i.odd? ? '1' : '2'
21
+ after_validation do
22
+ if errors.blank?
23
+ self.identification_number = self.identification_number.upcase
24
+ self.birth_date = Date.parse "#{identification_number[6..9]}-#{identification_number[10..11]}-#{identification_number[12..13]}"
25
+ self.gender_code = identification_number[16].to_i.odd? ? '1' : '2'
26
+ end
25
27
  end
26
28
 
27
29
  end
@@ -0,0 +1,16 @@
1
+ class Unidom::Certificate::China::IdentificationNumberValidator < ActiveModel::EachValidator
2
+
3
+ WEIGHTS = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ].freeze
4
+ CHECK_DIGITS = %w{1 0 X 9 8 7 6 5 4 3 2}.freeze
5
+
6
+ def validate_each(record, attribute, value)
7
+
8
+ value = value.to_s
9
+ sum = 0
10
+ value[0..16].chars.each_with_index do |char, index| sum += char.to_i*WEIGHTS[index] end
11
+
12
+ record.errors[attribute] << (options[:message]||'is invalid') unless CHECK_DIGITS[sum%11]==value[17]
13
+
14
+ end
15
+
16
+ end
@@ -1,7 +1,7 @@
1
1
  module Unidom
2
2
  module Certificate
3
3
  module China
4
- VERSION = '1.1.1'.freeze
4
+ VERSION = '1.2'.freeze
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unidom-certificate-china
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: '1.2'
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-08-15 00:00:00.000000000 Z
11
+ date: 2016-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unidom-common
@@ -50,14 +50,19 @@ files:
50
50
  - MIT-LICENSE
51
51
  - README.md
52
52
  - Rakefile
53
+ - app/assets/config/unidom-certificate-china_manifest.js
53
54
  - app/assets/javascripts/unidom/certificate/china/application.js
54
55
  - app/assets/stylesheets/unidom/certificate/china/application.css
55
56
  - app/controllers/unidom/certificate/china/application_controller.rb
56
57
  - app/helpers/unidom/certificate/china/application_helper.rb
58
+ - app/jobs/unidom/certificate/china/application_job.rb
59
+ - app/mailers/unidom/certificate/china/application_mailer.rb
60
+ - app/models/unidom/certificate/china/application_record.rb
57
61
  - app/models/unidom/certificate/china/business_license.rb
58
62
  - app/models/unidom/certificate/china/concerns/as_business_license_certificated.rb
59
63
  - app/models/unidom/certificate/china/concerns/as_identity_card_certificated.rb
60
64
  - app/models/unidom/certificate/china/identity_card.rb
65
+ - app/validators/unidom/certificate/china/identification_number_validator.rb
61
66
  - app/views/layouts/unidom/certificate/china/application.html.erb
62
67
  - config/routes.rb
63
68
  - db/migrate/20010291560010_create_unidom_china_identity_cards.rb