unidom-score 0.3 → 0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2c9e9abc9735560e70d40caaaab8208a16dc313e
4
- data.tar.gz: 455934053a55e4826d4a250de25764f214af6ee8
3
+ metadata.gz: 3d8181349266ef32d4541da8cc80fbd3f99bb0cc
4
+ data.tar.gz: 7efba97555ffc2d5b331aefa9c0fa217ab989ae5
5
5
  SHA512:
6
- metadata.gz: b335368d1bddabf333377fefb56a9a72158a66000ddf91f0af06b9ba5fdba0e97d0b7b55815e6277e693e35e48992046774309c58b61c22bc7ec6c6a7d6998e3
7
- data.tar.gz: 361ff3c5a773d5c322065b6e5cc7dfb12ac6368f267f7f1edec93a589432a3896cb9382d5584d7c62e47c94646a27a0408f525b6c48e02778fa91e070321a40f
6
+ metadata.gz: dc6599866a95d476f255d623716f6b4f74aaf7f4fde739bcf5327157297346bda71923c87500e7ca9b908440d020a1f301686008f57b2f30f2c8cf4ce98859ed
7
+ data.tar.gz: a8713c30552a6870496b66f60c3d5d9d71475e5ed8a7af324c87040d9c90c6f7419ec7e321fbe3be4174bda3e59e917f85b99c0eb56f821e7d3747c9f9015963
data/README.md CHANGED
@@ -37,13 +37,17 @@ The migration versions start with 200601.
37
37
 
38
38
  ```ruby
39
39
  company = Unidom::Party::Company.create! name: 'Xerox'
40
- template = Unidom::Score::ScoreSheetTemplate.create! subject: company, name: 'Survey 2003', total_score: 100
40
+ sheet_template = Unidom::Score::ScoreSheetTemplate.create! subject: company, name: 'Survey 2003', total_score: 100
41
+
42
+ item_template_1 = Unidom::Score::ScoreItemTemplate.create! sheet: sheet_template, title: 'Q1: What is your name?', score: 60
43
+ item_template_2 = Unidom::Score::ScoreItemTemplate.create! sheet: sheet_template, title: 'Q2: How old are you?', score: 40
41
44
 
42
45
  scorer = Unidom::Party::Person.create! name: 'Tim'
43
46
  score_keeper = Unidom::Party::Shop.create! name: 'WalMart'
44
- score_sheet = Unidom::Score::ScoreSheet.score! scorer: scorer, score_keeper: score_keeper, template: template, name: nil, score: 98, scored_on: Date.current, opened_at: Time.now, description: nil, instruction: nil
47
+ score_sheet = Unidom::Score::ScoreSheet.score! scorer: scorer, score_keeper: score_keeper, template: sheet_template, name: nil, score: 98, scored_on: Date.current, opened_at: Time.now, description: nil, instruction: nil
45
48
  # The template could be nil
46
49
 
47
- item_1 = Unidom::Score::ScoreItem.score! sheet: score_sheet, scorer: score_sheet.try(:scorer), template: nil, title: template.try(:title), score: 59, scored_on: Date.current, opened_at: Time.now, description: nil, instruction: nil
48
- item_2 = Unidom::Score::ScoreItem.score! sheet: score_sheet, scorer: score_sheet.try(:scorer), template: nil, title: template.try(:title), score: 39, scored_on: Date.current, opened_at: Time.now, description: nil, instruction: nil
50
+ item_1 = Unidom::Score::ScoreItem.score! sheet: score_sheet, scorer: score_sheet.try(:scorer), template: item_template_1, title: item_template_1.try(:title), score: 59, scored_on: Date.current, opened_at: Time.now, description: nil, instruction: nil
51
+ item_2 = Unidom::Score::ScoreItem.score! sheet: score_sheet, scorer: score_sheet.try(:scorer), template: item_template_2, title: item_template_2.try(:title), score: 39, scored_on: Date.current, opened_at: Time.now, description: nil, instruction: nil
52
+ # The template could be nil
49
53
  ```
@@ -1,7 +1,7 @@
1
1
  # Score Item 是评分项。
2
+ # #sheet 是评分表。
2
3
  # #template 是评分项模版。
3
4
  # #scorer 是评分者。
4
- # #score_keeper 是得分者。
5
5
 
6
6
  class Unidom::Score::ScoreItem < Unidom::Score::ApplicationRecord
7
7
 
@@ -12,11 +12,11 @@ class Unidom::Score::ScoreItem < Unidom::Score::ApplicationRecord
12
12
  validates :title, allow_blank: true, length: { in: 2..columns_hash['title'].limit }
13
13
  validates :score, presence: true, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 1_000_000_000 }
14
14
 
15
- belongs_to :sheet, class_name: 'Unidom::Score::ScoreSheet', foreign_key: :score_sheet_id
16
- belongs_to :template, class_name: 'Unidom::Score::ScoreItemTemplate', foreign_key: :score_item_template_id
15
+ belongs_to :sheet, class_name: 'Unidom::Score::ScoreSheet', foreign_key: :sheet_id
16
+ belongs_to :template, class_name: 'Unidom::Score::ScoreItemTemplate', foreign_key: :template_id
17
17
  belongs_to :scorer, polymorphic: true
18
18
 
19
- scope :sheet_is, ->(sheet) { where sheet: sheet }
19
+ scope :sheet_is, ->(sheet) { where sheet_id: to_id(sheet) }
20
20
  scope :template_is, ->(template) { where template_id: to_id(template) }
21
21
  scope :scored_by, ->(scorer) { where scorer: scorer }
22
22
 
@@ -0,0 +1,20 @@
1
+ # Score Item Tempalte 是评分项模版。
2
+ # #sheet 是评分表模版。
3
+ # #scorings 是评分项。
4
+
5
+ class Unidom::Score::ScoreItemTemplate < Unidom::Score::ApplicationRecord
6
+
7
+ self.table_name = 'unidom_score_item_templates'
8
+
9
+ include Unidom::Common::Concerns::ModelExtension
10
+
11
+ validates :title, presence: true, length: { in: 2..columns_hash['title'].limit }
12
+ validates :score, presence: true, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 1_000_000_000 }
13
+
14
+ belongs_to :sheet, class_name: 'Unidom::Score::ScoreSheetTemplate'
15
+
16
+ has_many :scorings, class_name: 'Unidom::Score::ScoreItem', foreign_key: :template_id
17
+
18
+ scope :sheet_is, ->(sheet) { where sheet_id: to_id(sheet) }
19
+
20
+ end
@@ -2,6 +2,7 @@
2
2
  # #template 是评分表模版。
3
3
  # #scorer 是评分者。
4
4
  # #score_keeper 是得分者。
5
+ # #items 是评分项。
5
6
 
6
7
  class Unidom::Score::ScoreSheet < Unidom::Score::ApplicationRecord
7
8
 
@@ -12,11 +13,11 @@ class Unidom::Score::ScoreSheet < Unidom::Score::ApplicationRecord
12
13
  validates :name, allow_blank: true, length: { in: 2..columns_hash['name'].limit }
13
14
  validates :score, presence: true, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 1_000_000_000 }
14
15
 
15
- belongs_to :template, class_name: 'Unidom::Score::ScoreSheetTemplate', foreign_key: :score_sheet_template_id
16
+ belongs_to :template, class_name: 'Unidom::Score::ScoreSheetTemplate', foreign_key: :template_id
16
17
  belongs_to :scorer, polymorphic: true
17
18
  belongs_to :score_keeper, polymorphic: true
18
19
 
19
- has_many :items, class_name: 'Unidom::Score::ScoreItem', foreign_key: :score_sheet_id
20
+ has_many :items, class_name: 'Unidom::Score::ScoreItem', foreign_key: :sheet_id
20
21
 
21
22
  scope :template_is, ->(template) { where template_id: to_id(template) }
22
23
  scope :scored_by, ->(scorer) { where scorer: scorer }
@@ -1,7 +1,7 @@
1
1
  # Score Sheet Tempalte 是评分表模版。
2
- # #template 是评分表模版。
3
- # #scorer 是评分者。
4
- # #score_keeper 是得分者。
2
+ # #subject 是主题。
3
+ # #items 是评分项模版。
4
+ # #scorings 是评分表。
5
5
 
6
6
  class Unidom::Score::ScoreSheetTemplate < Unidom::Score::ApplicationRecord
7
7
 
@@ -14,7 +14,8 @@ class Unidom::Score::ScoreSheetTemplate < Unidom::Score::ApplicationRecord
14
14
 
15
15
  belongs_to :subject, polymorphic: true
16
16
 
17
- has_many :sheets, class_name: 'Unidom::Score::ScoreSheet'
17
+ has_many :items, class_name: 'Unidom::Score::ScoreItemTemplate', foreign_key: :sheet_id
18
+ has_many :scorings, class_name: 'Unidom::Score::ScoreSheet', foreign_key: :template_id
18
19
 
19
20
  scope :subject_is, ->(subject) { where subject: subject }
20
21
 
@@ -0,0 +1,29 @@
1
+ class CreateUnidomScoreItemTemplates < ActiveRecord::Migration
2
+
3
+ def change
4
+
5
+ create_table :unidom_score_item_templates, id: :uuid do |t|
6
+
7
+ t.references :sheet, type: :uuid, null: false
8
+
9
+ t.string :title, null: false, default: '', limit: 200
10
+ t.decimal :score, null: false, default: 0.0, precision: 12, scale: 2
11
+
12
+ t.text :description
13
+ t.text :instruction
14
+
15
+ t.column :state, 'char(1)', null: false, default: 'C'
16
+ t.datetime :opened_at, null: false, default: Time.utc(1970)
17
+ t.datetime :closed_at, null: false, default: Time.utc(3000)
18
+ t.boolean :defunct, null: false, default: false
19
+ t.jsonb :notation, null: false, default: {}
20
+
21
+ t.timestamps null: false
22
+
23
+ end
24
+
25
+ add_index :unidom_score_item_templates, :sheet_id
26
+
27
+ end
28
+
29
+ end
@@ -4,10 +4,10 @@ class CreateUnidomScoreSheets < ActiveRecord::Migration
4
4
 
5
5
  create_table :unidom_score_sheets, id: :uuid do |t|
6
6
 
7
- t.references :score_sheet_template, type: :uuid, null: true
8
- t.references :scorer, type: :uuid, null: false,
7
+ t.references :template, type: :uuid, null: true
8
+ t.references :scorer, type: :uuid, null: false,
9
9
  polymorphic: { null: false, default: '', limit: 200 }
10
- t.references :score_keeper, type: :uuid, null: false,
10
+ t.references :score_keeper, type: :uuid, null: false,
11
11
  polymorphic: { null: false, default: '', limit: 200 }
12
12
 
13
13
  t.string :name, null: true, default: nil, limit: 200
@@ -27,7 +27,7 @@ class CreateUnidomScoreSheets < ActiveRecord::Migration
27
27
 
28
28
  end
29
29
 
30
- add_index :unidom_score_sheets, :score_sheet_template_id
30
+ add_index :unidom_score_sheets, :template_id
31
31
  add_index :unidom_score_sheets, :scorer_id
32
32
  add_index :unidom_score_sheets, :score_keeper_id
33
33
 
@@ -4,9 +4,9 @@ class CreateUnidomScoreItems < ActiveRecord::Migration
4
4
 
5
5
  create_table :unidom_score_items, id: :uuid do |t|
6
6
 
7
- t.references :score_sheet, type: :uuid, null: false
8
- t.references :score_item_template, type: :uuid, null: true
9
- t.references :scorer, type: :uuid, null: false,
7
+ t.references :sheet, type: :uuid, null: false
8
+ t.references :template, type: :uuid, null: true
9
+ t.references :scorer, type: :uuid, null: false,
10
10
  polymorphic: { null: false, default: '', limit: 200 }
11
11
 
12
12
  t.string :title, null: true, default: nil, limit: 200
@@ -26,8 +26,8 @@ class CreateUnidomScoreItems < ActiveRecord::Migration
26
26
 
27
27
  end
28
28
 
29
- add_index :unidom_score_items, :score_sheet_id
30
- add_index :unidom_score_items, :score_item_template_id
29
+ add_index :unidom_score_items, :sheet_id
30
+ add_index :unidom_score_items, :template_id
31
31
  add_index :unidom_score_items, :scorer_id
32
32
 
33
33
  end
@@ -1,5 +1,5 @@
1
1
  module Unidom
2
2
  module Score
3
- VERSION = '0.3'.freeze
3
+ VERSION = '0.4'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unidom-score
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: '0.4'
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-12 00:00:00.000000000 Z
11
+ date: 2016-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unidom-common
@@ -45,11 +45,13 @@ files:
45
45
  - app/mailers/unidom/score/application_mailer.rb
46
46
  - app/models/unidom/score/application_record.rb
47
47
  - app/models/unidom/score/score_item.rb
48
+ - app/models/unidom/score/score_item_template.rb
48
49
  - app/models/unidom/score/score_sheet.rb
49
50
  - app/models/unidom/score/score_sheet_template.rb
50
51
  - app/views/layouts/unidom/score/application.html.erb
51
52
  - config/routes.rb
52
53
  - db/migrate/20060101000000_create_unidom_score_sheet_templates.rb
54
+ - db/migrate/20060102000000_create_unidom_score_item_templates.rb
53
55
  - db/migrate/20060111000000_create_unidom_score_sheets.rb
54
56
  - db/migrate/20060112000000_create_unidom_score_items.rb
55
57
  - lib/tasks/score_tasks.rake