alphagov / trade-tariff-backend

Enabling the population and distribution via API of UK Customs tariffs and duties
MIT License
7 stars 6 forks source link

Fix GoodsNomenclature -> Chapter,Heading,Commodity STI working. #34

Closed saulius closed 11 years ago

saulius commented 11 years ago

Ruby inheritance with Sequel models work in a weird way that is internal and unlikely to change. The provided STI plugin is not good enough, because it expects record type to be specified in the column and not identified by pattern. The problem:

Before:

[1] pry(main)> GoodsNomenclature.first
=> #<GoodsNomenclature @values={:goods_nomenclature_sid=>27623, :goods_nomenclature_item_id=>"0100000000", :producline_suffix=>"80", :validity_start_date=>1971-12-31 00:00:00 +0300, :validity_end_date=>nil, :statistical_indicator=>0, :created_at=>nil, :updated_at=>nil}>
[2] pry(main)> Commodity.first
=> #<Commodity @values={:goods_nomenclature_sid=>72760, :goods_nomenclature_item_id=>"0101100000", :producline_suffix=>"80", :validity_start_date=>2002-01-01 00:00:00 +0200, :validity_end_date=>2011-12-31 00:00:00 +0200, :statistical_indicator=>0, :created_at=>nil, :updated_at=>nil}>
[3] pry(main)> GoodsNomenclature.first
=> #<Commodity @values={:goods_nomenclature_sid=>27623, :goods_nomenclature_item_id=>"0100000000", :producline_suffix=>"80", :validity_start_date=>1971-12-31 00:00:00 +0300, :validity_end_date=>nil, :statistical_indicator=>0, :created_at=>nil, :updated_at=>nil}>
[4] pry(main)> Heading.first
=> #<Heading @values={:goods_nomenclature_sid=>27624, :goods_nomenclature_item_id=>"0101000000", :producline_suffix=>"80", :validity_start_date=>1972-01-01 00:00:00 +0300, :validity_end_date=>nil, :statistical_indicator=>0, :created_at=>nil, :updated_at=>nil}>
[5] pry(main)> GoodsNomenclature.first
=> #<Heading @values={:goods_nomenclature_sid=>27623, :goods_nomenclature_item_id=>"0100000000", :producline_suffix=>"80", :validity_start_date=>1971-12-31 00:00:00 +0300, :validity_end_date=>nil, :statistical_indicator=>0, :created_at=>nil, :updated_at=>nil}>

After:

[5] pry(main)> GoodsNomenclature.first
=> #<Chapter @values={:goods_nomenclature_sid=>27623, :goods_nomenclature_item_id=>"0100000000", :producline_suffix=>"80", :validity_start_date=>1971-12-31 00:00:00 +0300, :validity_end_date=>nil, :statistical_indicator=>0, :created_at=>nil, :updated_at=>nil}>
[6] pry(main)> Commodity.first                                                                                                  
=> #<Commodity @values={:goods_nomenclature_sid=>72760, :goods_nomenclature_item_id=>"0101100000", :producline_suffix=>"80", :validity_start_date=>2002-01-01 00:00:00 +0200, :validity_end_date=>2011-12-31 00:00:00 +0200, :statistical_indicator=>0, :created_at=>nil, :updated_at=>nil}>
[7] pry(main)> GoodsNomenclature.first                                                                                          
=> #<Chapter @values={:goods_nomenclature_sid=>27623, :goods_nomenclature_item_id=>"0100000000", :producline_suffix=>"80", :validity_start_date=>1971-12-31 00:00:00 +0300, :validity_end_date=>nil, :statistical_indicator=>0, :created_at=>nil, :updated_at=>nil}>
[8] pry(main)> Heading.first
=> #<Heading @values={:goods_nomenclature_sid=>27624, :goods_nomenclature_item_id=>"0101000000", :producline_suffix=>"80", :validity_start_date=>1972-01-01 00:00:00 +0300, :validity_end_date=>nil, :statistical_indicator=>0, :created_at=>nil, :updated_at=>nil}>
[9] pry(main)> GoodsNomenclature.first                                                                                          
=> #<Chapter @values={:goods_nomenclature_sid=>27623, :goods_nomenclature_item_id=>"0100000000", :producline_suffix=>"80", :validity_start_date=>1971-12-31 00:00:00 +0300, :validity_end_date=>nil, :statistical_indicator=>0, :created_at=>nil, :updated_at=>nil}>