Class: DumpedRailers::RecordBuilder::FixtureSet
- Inherits:
-
Object
- Object
- DumpedRailers::RecordBuilder::FixtureSet
- Includes:
- TSort
- Defined in:
- lib/dumped_railers/record_builder/fixture_set.rb
Instance Attribute Summary collapse
-
#fixture_tables ⇒ Object
readonly
Returns the value of attribute fixture_tables.
-
#record_sets ⇒ Object
readonly
Returns the value of attribute record_sets.
Instance Method Summary collapse
- #authorize_models! ⇒ Object
- #build_record_sets! ⇒ Object
-
#initialize(raw_fixtures, authorized_models: []) ⇒ FixtureSet
constructor
A new instance of FixtureSet.
- #sort_by_table_dependencies! ⇒ Object
Constructor Details
#initialize(raw_fixtures, authorized_models: []) ⇒ FixtureSet
Returns a new instance of FixtureSet.
12 13 14 15 |
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 12 def initialize(raw_fixtures, authorized_models: []) @fixture_tables = raw_fixtures.map { |raw_records| build_fixture_table(raw_records) } = Array() end |
Instance Attribute Details
#fixture_tables ⇒ Object (readonly)
Returns the value of attribute fixture_tables.
10 11 12 |
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 10 def fixture_tables @fixture_tables end |
#record_sets ⇒ Object (readonly)
Returns the value of attribute record_sets.
10 11 12 |
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 10 def record_sets @record_sets end |
Instance Method Details
#authorize_models! ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 25 def return if .include?(:any) = fixture_models.reject { |model| .include? model } return if .empty? raise RuntimeError, " You are trying to import data into unauthorized models.\n Make sure that the fixture contains records for authorized models only.\n\n Models that are forbidden to access: \#{unauthorized_models.map(&:name).join(', ')}\n\n ERROR_MESSAGE\nend\n" |
#build_record_sets! ⇒ Object
42 43 44 45 46 |
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 42 def build_record_sets! @record_sets = @fixture_tables.map { |table| [table.model, table.build_records!] }.to_h end |
#sort_by_table_dependencies! ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 17 def sort_by_table_dependencies! @fixture_tables.each(&:analyze_metadata_dependencies!) # dependency are sorted in topological order using Active Record reflection @fixture_tables = tsort self end |