metasploit_data_models 0.7.0-java → 0.11.2-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. data/.gitignore +3 -0
  2. data/.travis.yml +1 -0
  3. data/app/models/mdm/host.rb +352 -26
  4. data/app/models/mdm/loot.rb +72 -7
  5. data/app/models/mdm/{module_action.rb → module/action.rb} +3 -3
  6. data/app/models/mdm/{module_arch.rb → module/arch.rb} +3 -3
  7. data/app/models/mdm/{module_author.rb → module/author.rb} +3 -3
  8. data/app/models/mdm/module/detail.rb +280 -0
  9. data/app/models/mdm/{module_mixin.rb → module/mixin.rb} +3 -3
  10. data/app/models/mdm/{module_platform.rb → module/platform.rb} +3 -3
  11. data/app/models/mdm/module/ref.rb +48 -0
  12. data/app/models/mdm/{module_target.rb → module/target.rb} +3 -3
  13. data/app/models/mdm/note.rb +61 -6
  14. data/app/models/mdm/ref.rb +39 -1
  15. data/app/models/mdm/service.rb +85 -7
  16. data/app/models/mdm/session.rb +100 -6
  17. data/app/models/mdm/vuln.rb +104 -24
  18. data/db/migrate/20130228214900_change_required_columns_to_null_false_in_web_vulns.rb +1 -17
  19. data/db/migrate/20130412154159_change_foreign_key_in_module_actions.rb +25 -0
  20. data/db/migrate/20130412171844_change_foreign_key_in_module_archs.rb +25 -0
  21. data/db/migrate/20130412173121_change_foreign_key_in_module_authors.rb +25 -0
  22. data/db/migrate/20130412173640_change_foreign_key_in_module_mixins.rb +25 -0
  23. data/db/migrate/20130412174254_change_foreign_key_in_module_platforms.rb +25 -0
  24. data/db/migrate/20130412174719_change_foreign_key_in_module_refs.rb +25 -0
  25. data/db/migrate/20130412175040_change_foreign_key_in_module_targets.rb +25 -0
  26. data/db/migrate/20130430151353_change_required_columns_to_null_false_in_hosts.rb +11 -0
  27. data/db/migrate/20130430162145_enforce_address_uniqueness_in_workspace_in_hosts.rb +23 -0
  28. data/lib/mdm/module.rb +4 -0
  29. data/lib/metasploit_data_models.rb +1 -0
  30. data/lib/metasploit_data_models/change_required_columns_to_null_false.rb +23 -0
  31. data/lib/metasploit_data_models/version.rb +1 -1
  32. data/spec/app/models/mdm/host_spec.rb +411 -0
  33. data/spec/app/models/mdm/host_tag_spec.rb +13 -0
  34. data/spec/app/models/mdm/{module_action_spec.rb → module/action_spec.rb} +6 -6
  35. data/spec/app/models/mdm/{module_arch_spec.rb → module/arch_spec.rb} +6 -6
  36. data/spec/app/models/mdm/{module_author_spec.rb → module/author_spec.rb} +6 -6
  37. data/spec/app/models/mdm/{module_detail_spec.rb → module/detail_spec.rb} +101 -11
  38. data/spec/app/models/mdm/{module_mixin_spec.rb → module/mixin_spec.rb} +6 -6
  39. data/spec/app/models/mdm/{module_platform_spec.rb → module/platform_spec.rb} +6 -6
  40. data/spec/app/models/mdm/module/ref_spec.rb +62 -0
  41. data/spec/app/models/mdm/{module_target_spec.rb → module/target_spec.rb} +6 -6
  42. data/spec/app/models/mdm/ref_spec.rb +62 -0
  43. data/spec/app/models/mdm/tag_spec.rb +13 -0
  44. data/spec/app/models/mdm/vuln_ref_spec.rb +13 -0
  45. data/spec/app/models/mdm/vuln_spec.rb +231 -0
  46. data/spec/dummy/db/schema.rb +20 -20
  47. data/spec/factories/mdm/host_tags.rb +9 -0
  48. data/spec/factories/mdm/hosts.rb +65 -0
  49. data/spec/factories/mdm/module/actions.rb +14 -0
  50. data/spec/factories/mdm/module/archs.rb +14 -0
  51. data/spec/factories/mdm/{module_authors.rb → module/authors.rb} +4 -4
  52. data/spec/factories/mdm/module/details.rb +66 -0
  53. data/spec/factories/mdm/module/mixins.rb +14 -0
  54. data/spec/factories/mdm/module/platforms.rb +14 -0
  55. data/spec/factories/mdm/module/refs.rb +14 -0
  56. data/spec/factories/mdm/{module_targets.rb → module/targets.rb} +3 -3
  57. data/spec/factories/mdm/refs.rb +9 -0
  58. data/spec/factories/mdm/tags.rb +14 -0
  59. data/spec/factories/mdm/vuln_refs.rb +4 -0
  60. data/spec/factories/mdm/vulns.rb +20 -0
  61. metadata +75 -42
  62. data/app/models/mdm/module_detail.rb +0 -59
  63. data/app/models/mdm/module_ref.rb +0 -24
  64. data/spec/app/models/mdm/module_ref_spec.rb +0 -38
  65. data/spec/factories/mdm/module_actions.rb +0 -14
  66. data/spec/factories/mdm/module_archs.rb +0 -14
  67. data/spec/factories/mdm/module_details.rb +0 -9
  68. data/spec/factories/mdm/module_mixins.rb +0 -14
  69. data/spec/factories/mdm/module_platforms.rb +0 -14
  70. data/spec/factories/mdm/module_refs.rb +0 -14
@@ -0,0 +1,14 @@
1
+ FactoryGirl.define do
2
+ factory :mdm_module_action, :class => Mdm::Module::Action do
3
+ name { generate :mdm_module_action_name }
4
+
5
+ #
6
+ # Associations
7
+ #
8
+ association :detail, :factory => :mdm_module_detail
9
+ end
10
+
11
+ sequence :mdm_module_action_name do |n|
12
+ "Mdm::Module::Action#name #{n}"
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ FactoryGirl.define do
2
+ factory :mdm_module_arch, :class => Mdm::Module::Arch do
3
+ name { generate :mdm_module_arch_name }
4
+
5
+ #
6
+ # Associations
7
+ #
8
+ association :detail, :factory => :mdm_module_detail
9
+ end
10
+
11
+ sequence :mdm_module_arch_name do |n|
12
+ "Mdm::Module::Arch#name #{n}"
13
+ end
14
+ end
@@ -1,11 +1,11 @@
1
1
  FactoryGirl.define do
2
- factory :mdm_module_author, :class => Mdm::ModuleAuthor do
2
+ factory :mdm_module_author, :class => Mdm::Module::Author do
3
3
  name { generate :mdm_module_author_name }
4
4
 
5
5
  #
6
6
  # Associations
7
7
  #
8
- association :module_detail, :factory => :mdm_module_detail
8
+ association :detail, :factory => :mdm_module_detail
9
9
 
10
10
  factory :full_mdm_module_author do
11
11
  email { generate :mdm_module_author_name }
@@ -13,10 +13,10 @@ FactoryGirl.define do
13
13
  end
14
14
 
15
15
  sequence :mdm_module_author_name do |n|
16
- "Mdm::ModuleAuthor#name #{n}"
16
+ "Mdm::Module::Author#name #{n}"
17
17
  end
18
18
 
19
19
  sequence :mdm_module_author_email do |n|
20
- "Mdm::ModuleAuthor#email #{n}"
20
+ "Mdm::Module::Author#email #{n}"
21
21
  end
22
22
  end
@@ -0,0 +1,66 @@
1
+ FactoryGirl.define do
2
+ factory :mdm_module_detail, :class => Mdm::Module::Detail do
3
+ ignore do
4
+ root {
5
+ MetasploitDataModels.root
6
+ }
7
+ modules_pathname { root.join('modules') }
8
+ end
9
+
10
+ description { generate :mdm_module_detail_description }
11
+ disclosure_date { generate :mdm_module_detail_disclosure_date }
12
+ license { generate :mdm_module_detail_license }
13
+ mtime { generate :mdm_module_detail_mtime }
14
+ mtype { generate :mdm_module_detail_mtype }
15
+ privileged { generate :mdm_module_detail_privileged }
16
+ name { generate :mdm_module_detail_name }
17
+ rank { generate :mdm_module_detail_rank }
18
+ refname { generate :mdm_module_detail_refname }
19
+ fullname { "#{mtype}/#{refname}" }
20
+ stance { generate :mdm_module_detail_stance }
21
+
22
+ file {
23
+ type_directory = Mdm::Module::Detail::DIRECTORY_BY_TYPE[mtype]
24
+
25
+ modules_pathname.join(
26
+ type_directory,
27
+ "#{refname}.rb"
28
+ ).to_path
29
+ }
30
+ end
31
+
32
+ sequence :mdm_module_detail_disclosure_date do |n|
33
+ # @todo https://www.pivotaltracker.com/story/show/48450593
34
+ Date.today - n
35
+ end
36
+
37
+ sequence :mdm_module_detail_description do |n|
38
+ "Module Description #{n}"
39
+ end
40
+
41
+ sequence :mdm_module_detail_license do |n|
42
+ "Module License v#{n}"
43
+ end
44
+
45
+ sequence :mdm_module_detail_privileged, Mdm::Module::Detail::PRIVILEGES.cycle
46
+
47
+ sequence :mdm_module_detail_mtime do |n|
48
+ Time.now.utc - n.seconds
49
+ end
50
+
51
+ ordered_types = Mdm::Module::Detail::DIRECTORY_BY_TYPE.keys.sort
52
+ sequence :mdm_module_detail_mtype, ordered_types.cycle
53
+
54
+ sequence :mdm_module_detail_name do |n|
55
+ "Module Name #{n}"
56
+ end
57
+
58
+ ordered_ranks = Mdm::Module::Detail::RANK_BY_NAME.values.sort
59
+ sequence :mdm_module_detail_rank, ordered_ranks.cycle
60
+
61
+ sequence :mdm_module_detail_refname do |n|
62
+ "module/ref/name#{n}"
63
+ end
64
+
65
+ sequence :mdm_module_detail_stance, Mdm::Module::Detail::STANCES.cycle
66
+ end
@@ -0,0 +1,14 @@
1
+ FactoryGirl.define do
2
+ factory :mdm_module_mixin, :class => Mdm::Module::Mixin do
3
+ name { generate :mdm_module_mixin_name }
4
+
5
+ #
6
+ # Associations
7
+ #
8
+ association :detail, :factory => :mdm_module_detail
9
+ end
10
+
11
+ sequence :mdm_module_mixin_name do |n|
12
+ "Mdm::Module::Mixin#name #{n}"
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ FactoryGirl.define do
2
+ factory :mdm_module_platform, :class => Mdm::Module::Platform do
3
+ name { generate :mdm_module_platform_name }
4
+
5
+ #
6
+ # Associations
7
+ #
8
+ association :detail, :factory => :mdm_module_detail
9
+ end
10
+
11
+ sequence :mdm_module_platform_name do |n|
12
+ "Mdm::Module::Platform#name #{n}"
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ FactoryGirl.define do
2
+ factory :mdm_module_ref, :class => Mdm::Module::Ref do
3
+ name { generate :mdm_module_ref_name }
4
+
5
+ #
6
+ # Associations
7
+ #
8
+ association :detail, :factory => :mdm_module_detail
9
+ end
10
+
11
+ sequence :mdm_module_ref_name do |n|
12
+ "Mdm::Module::Ref#name #{n}"
13
+ end
14
+ end
@@ -1,12 +1,12 @@
1
1
  FactoryGirl.define do
2
- factory :mdm_module_target, :class => Mdm::ModuleTarget do
2
+ factory :mdm_module_target, :class => Mdm::Module::Target do
3
3
  index { generate :mdm_module_target_index }
4
4
  name { generate :mdm_module_target_name }
5
5
 
6
6
  #
7
7
  # Associations
8
8
  #
9
- association :module_detail, :factory => :mdm_module_detail
9
+ association :detail, :factory => :mdm_module_detail
10
10
  end
11
11
 
12
12
  sequence :mdm_module_target_index do |n|
@@ -14,6 +14,6 @@ FactoryGirl.define do
14
14
  end
15
15
 
16
16
  sequence :mdm_module_target_name do |n|
17
- "Mdm::ModuleTarget#name #{n}"
17
+ "Mdm::Module::Target#name #{n}"
18
18
  end
19
19
  end
@@ -0,0 +1,9 @@
1
+ FactoryGirl.define do
2
+ factory :mdm_ref, :class => Mdm::Ref do
3
+ name { generate :mdm_ref_name }
4
+ end
5
+
6
+ sequence :mdm_ref_name do |n|
7
+ "Mdm::Ref#name #{n}"
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ FactoryGirl.define do
2
+ factory :mdm_tag, :class => Mdm::Tag do
3
+ desc { generate :mdm_tag_desc }
4
+ name { generate :mdm_tag_name }
5
+ end
6
+
7
+ sequence :mdm_tag_desc do |n|
8
+ "Mdm::Tag#description #{n}"
9
+ end
10
+
11
+ sequence :mdm_tag_name do |n|
12
+ "mdm_tag_name#{n}"
13
+ end
14
+ end
@@ -0,0 +1,4 @@
1
+ FactoryGirl.define do
2
+ factory :mdm_vuln_ref, :class => Mdm::VulnRef do
3
+ end
4
+ end
@@ -0,0 +1,20 @@
1
+ FactoryGirl.define do
2
+ factory :mdm_vuln, :class => Mdm::Vuln do
3
+ name { generate :mdm_vuln_name }
4
+
5
+ trait :host do
6
+ association :host, :factory => :mdm_host
7
+ end
8
+
9
+ trait :service do
10
+ association :service, :factory => :mdm_service
11
+ end
12
+
13
+ factory :mdm_host_vuln, :traits => [:host]
14
+ factory :mdm_service_vuln, :traits => [:service]
15
+ end
16
+
17
+ sequence :mdm_vuln_name do |n|
18
+ "Mdm::Vuln#name #{n}"
19
+ end
20
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: metasploit_data_models
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.7.0
5
+ version: 0.11.2
6
6
  platform: java
7
7
  authors:
8
8
  - Samuel Huckins
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-05-06 00:00:00.000000000 Z
14
+ date: 2013-05-13 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rake
@@ -188,14 +188,14 @@ files:
188
188
  - app/models/mdm/loot.rb
189
189
  - app/models/mdm/macro.rb
190
190
  - app/models/mdm/mod_ref.rb
191
- - app/models/mdm/module_action.rb
192
- - app/models/mdm/module_arch.rb
193
- - app/models/mdm/module_author.rb
194
- - app/models/mdm/module_detail.rb
195
- - app/models/mdm/module_mixin.rb
196
- - app/models/mdm/module_platform.rb
197
- - app/models/mdm/module_ref.rb
198
- - app/models/mdm/module_target.rb
191
+ - app/models/mdm/module/action.rb
192
+ - app/models/mdm/module/arch.rb
193
+ - app/models/mdm/module/author.rb
194
+ - app/models/mdm/module/detail.rb
195
+ - app/models/mdm/module/mixin.rb
196
+ - app/models/mdm/module/platform.rb
197
+ - app/models/mdm/module/ref.rb
198
+ - app/models/mdm/module/target.rb
199
199
  - app/models/mdm/nexpose_console.rb
200
200
  - app/models/mdm/note.rb
201
201
  - app/models/mdm/profile.rb
@@ -307,11 +307,22 @@ files:
307
307
  - db/migrate/20120625000008_add_fail_message.rb
308
308
  - db/migrate/20120718202805_add_owner_and_payload_to_web_vulns.rb
309
309
  - db/migrate/20130228214900_change_required_columns_to_null_false_in_web_vulns.rb
310
+ - db/migrate/20130412154159_change_foreign_key_in_module_actions.rb
311
+ - db/migrate/20130412171844_change_foreign_key_in_module_archs.rb
312
+ - db/migrate/20130412173121_change_foreign_key_in_module_authors.rb
313
+ - db/migrate/20130412173640_change_foreign_key_in_module_mixins.rb
314
+ - db/migrate/20130412174254_change_foreign_key_in_module_platforms.rb
315
+ - db/migrate/20130412174719_change_foreign_key_in_module_refs.rb
316
+ - db/migrate/20130412175040_change_foreign_key_in_module_targets.rb
310
317
  - db/migrate/20130423211152_add_creds_counter_cache.rb
318
+ - db/migrate/20130430151353_change_required_columns_to_null_false_in_hosts.rb
319
+ - db/migrate/20130430162145_enforce_address_uniqueness_in_workspace_in_hosts.rb
311
320
  - lib/mdm.rb
312
321
  - lib/mdm/host/operating_system_normalization.rb
322
+ - lib/mdm/module.rb
313
323
  - lib/metasploit_data_models.rb
314
324
  - lib/metasploit_data_models/base64_serializer.rb
325
+ - lib/metasploit_data_models/change_required_columns_to_null_false.rb
315
326
  - lib/metasploit_data_models/engine.rb
316
327
  - lib/metasploit_data_models/serialized_prefs.rb
317
328
  - lib/metasploit_data_models/validators/ip_format_validator.rb
@@ -320,14 +331,20 @@ files:
320
331
  - lib/tasks/yard.rake
321
332
  - metasploit_data_models.gemspec
322
333
  - script/rails
323
- - spec/app/models/mdm/module_action_spec.rb
324
- - spec/app/models/mdm/module_arch_spec.rb
325
- - spec/app/models/mdm/module_author_spec.rb
326
- - spec/app/models/mdm/module_detail_spec.rb
327
- - spec/app/models/mdm/module_mixin_spec.rb
328
- - spec/app/models/mdm/module_platform_spec.rb
329
- - spec/app/models/mdm/module_ref_spec.rb
330
- - spec/app/models/mdm/module_target_spec.rb
334
+ - spec/app/models/mdm/host_spec.rb
335
+ - spec/app/models/mdm/host_tag_spec.rb
336
+ - spec/app/models/mdm/module/action_spec.rb
337
+ - spec/app/models/mdm/module/arch_spec.rb
338
+ - spec/app/models/mdm/module/author_spec.rb
339
+ - spec/app/models/mdm/module/detail_spec.rb
340
+ - spec/app/models/mdm/module/mixin_spec.rb
341
+ - spec/app/models/mdm/module/platform_spec.rb
342
+ - spec/app/models/mdm/module/ref_spec.rb
343
+ - spec/app/models/mdm/module/target_spec.rb
344
+ - spec/app/models/mdm/ref_spec.rb
345
+ - spec/app/models/mdm/tag_spec.rb
346
+ - spec/app/models/mdm/vuln_ref_spec.rb
347
+ - spec/app/models/mdm/vuln_spec.rb
331
348
  - spec/app/models/mdm/web_vuln_spec.rb
332
349
  - spec/dummy/Rakefile
333
350
  - spec/dummy/app/assets/javascripts/application.js
@@ -362,17 +379,22 @@ files:
362
379
  - spec/dummy/public/favicon.ico
363
380
  - spec/dummy/script/rails
364
381
  - spec/factories/mdm/addresses.rb
382
+ - spec/factories/mdm/host_tags.rb
365
383
  - spec/factories/mdm/hosts.rb
366
- - spec/factories/mdm/module_actions.rb
367
- - spec/factories/mdm/module_archs.rb
368
- - spec/factories/mdm/module_authors.rb
369
- - spec/factories/mdm/module_details.rb
370
- - spec/factories/mdm/module_mixins.rb
371
- - spec/factories/mdm/module_platforms.rb
372
- - spec/factories/mdm/module_refs.rb
373
- - spec/factories/mdm/module_targets.rb
384
+ - spec/factories/mdm/module/actions.rb
385
+ - spec/factories/mdm/module/archs.rb
386
+ - spec/factories/mdm/module/authors.rb
387
+ - spec/factories/mdm/module/details.rb
388
+ - spec/factories/mdm/module/mixins.rb
389
+ - spec/factories/mdm/module/platforms.rb
390
+ - spec/factories/mdm/module/refs.rb
391
+ - spec/factories/mdm/module/targets.rb
392
+ - spec/factories/mdm/refs.rb
374
393
  - spec/factories/mdm/services.rb
394
+ - spec/factories/mdm/tags.rb
375
395
  - spec/factories/mdm/users.rb
396
+ - spec/factories/mdm/vuln_refs.rb
397
+ - spec/factories/mdm/vulns.rb
376
398
  - spec/factories/mdm/web_sites.rb
377
399
  - spec/factories/mdm/web_vulns.rb
378
400
  - spec/factories/mdm/workspaces.rb
@@ -411,14 +433,20 @@ signing_key:
411
433
  specification_version: 3
412
434
  summary: Database code for MSF and Metasploit Pro
413
435
  test_files:
414
- - spec/app/models/mdm/module_action_spec.rb
415
- - spec/app/models/mdm/module_arch_spec.rb
416
- - spec/app/models/mdm/module_author_spec.rb
417
- - spec/app/models/mdm/module_detail_spec.rb
418
- - spec/app/models/mdm/module_mixin_spec.rb
419
- - spec/app/models/mdm/module_platform_spec.rb
420
- - spec/app/models/mdm/module_ref_spec.rb
421
- - spec/app/models/mdm/module_target_spec.rb
436
+ - spec/app/models/mdm/host_spec.rb
437
+ - spec/app/models/mdm/host_tag_spec.rb
438
+ - spec/app/models/mdm/module/action_spec.rb
439
+ - spec/app/models/mdm/module/arch_spec.rb
440
+ - spec/app/models/mdm/module/author_spec.rb
441
+ - spec/app/models/mdm/module/detail_spec.rb
442
+ - spec/app/models/mdm/module/mixin_spec.rb
443
+ - spec/app/models/mdm/module/platform_spec.rb
444
+ - spec/app/models/mdm/module/ref_spec.rb
445
+ - spec/app/models/mdm/module/target_spec.rb
446
+ - spec/app/models/mdm/ref_spec.rb
447
+ - spec/app/models/mdm/tag_spec.rb
448
+ - spec/app/models/mdm/vuln_ref_spec.rb
449
+ - spec/app/models/mdm/vuln_spec.rb
422
450
  - spec/app/models/mdm/web_vuln_spec.rb
423
451
  - spec/dummy/Rakefile
424
452
  - spec/dummy/app/assets/javascripts/application.js
@@ -453,17 +481,22 @@ test_files:
453
481
  - spec/dummy/public/favicon.ico
454
482
  - spec/dummy/script/rails
455
483
  - spec/factories/mdm/addresses.rb
484
+ - spec/factories/mdm/host_tags.rb
456
485
  - spec/factories/mdm/hosts.rb
457
- - spec/factories/mdm/module_actions.rb
458
- - spec/factories/mdm/module_archs.rb
459
- - spec/factories/mdm/module_authors.rb
460
- - spec/factories/mdm/module_details.rb
461
- - spec/factories/mdm/module_mixins.rb
462
- - spec/factories/mdm/module_platforms.rb
463
- - spec/factories/mdm/module_refs.rb
464
- - spec/factories/mdm/module_targets.rb
486
+ - spec/factories/mdm/module/actions.rb
487
+ - spec/factories/mdm/module/archs.rb
488
+ - spec/factories/mdm/module/authors.rb
489
+ - spec/factories/mdm/module/details.rb
490
+ - spec/factories/mdm/module/mixins.rb
491
+ - spec/factories/mdm/module/platforms.rb
492
+ - spec/factories/mdm/module/refs.rb
493
+ - spec/factories/mdm/module/targets.rb
494
+ - spec/factories/mdm/refs.rb
465
495
  - spec/factories/mdm/services.rb
496
+ - spec/factories/mdm/tags.rb
466
497
  - spec/factories/mdm/users.rb
498
+ - spec/factories/mdm/vuln_refs.rb
499
+ - spec/factories/mdm/vulns.rb
467
500
  - spec/factories/mdm/web_sites.rb
468
501
  - spec/factories/mdm/web_vulns.rb
469
502
  - spec/factories/mdm/workspaces.rb
@@ -1,59 +0,0 @@
1
- class Mdm::ModuleDetail < ActiveRecord::Base
2
- self.table_name = 'module_details'
3
-
4
- #
5
- # Associations
6
- #
7
-
8
- has_many :actions, :class_name => 'Mdm::ModuleAction', :dependent => :destroy, :source => :module_action
9
- has_many :archs, :class_name => 'Mdm::ModuleArch', :dependent => :destroy, :source => :module_arch
10
- has_many :authors, :class_name => 'Mdm::ModuleAuthor', :dependent => :destroy, :source => :module_author
11
- has_many :mixins, :class_name => 'Mdm::ModuleMixin', :dependent => :destroy, :source => :module_mixin
12
- has_many :platforms, :class_name => 'Mdm::ModulePlatform', :dependent => :destroy, :source => :module_platform
13
- has_many :refs, :class_name => 'Mdm::ModuleRef', :dependent => :destroy, :source => :module_ref
14
- has_many :targets, :class_name => 'Mdm::ModuleTarget', :dependent => :destroy, :source => :module_target
15
-
16
- #
17
- # Validations
18
- #
19
-
20
- validates :refname, :presence => true
21
-
22
- validates_associated :actions
23
- validates_associated :archs
24
- validates_associated :authors
25
- validates_associated :mixins
26
- validates_associated :platforms
27
- validates_associated :refs
28
- validates_associated :targets
29
-
30
- def add_action(name)
31
- self.actions.build(:name => name).save
32
- end
33
-
34
- def add_arch(name)
35
- self.archs.build(:name => name).save
36
- end
37
-
38
- def add_author(name, email=nil)
39
- self.authors.build(:name => name, :email => email).save
40
- end
41
-
42
- def add_mixin(name)
43
- self.mixins.build(:name => name).save
44
- end
45
-
46
- def add_platform(name)
47
- self.platforms.build(:name => name).save
48
- end
49
-
50
- def add_ref(name)
51
- self.refs.build(:name => name).save
52
- end
53
-
54
- def add_target(index, name)
55
- self.targets.build(:index => index, :name => name).save
56
- end
57
-
58
- ActiveSupport.run_load_hooks(:mdm_module_detail, self)
59
- end