diff options
| -rw-r--r-- | Gemfile | 2 | ||||
| -rw-r--r-- | Gemfile.lock | 10 | ||||
| -rw-r--r-- | app/models/chouette/line.rb | 2 | ||||
| -rw-r--r-- | app/models/referential.rb | 2 | ||||
| -rw-r--r-- | app/models/referential_metadata.rb | 6 | ||||
| -rw-r--r-- | db/migrate/20161019090255_create_referential_metadata.rb | 13 | ||||
| -rw-r--r-- | db/schema.rb | 15 | ||||
| -rw-r--r-- | spec/factories/referential_metadata.rb | 9 | ||||
| -rw-r--r-- | spec/models/referential_metadata_spec.rb | 6 | ||||
| -rw-r--r-- | spec/models/referential_spec.rb | 3 |
10 files changed, 66 insertions, 2 deletions
@@ -21,6 +21,8 @@ gem 'sdoc', '~> 0.4.0', group: :doc # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring', group: :development +# ActiveRecord associations on top of PostgreSQL arrays +gem 'has_array_of', git: 'git@github.com:AF83/has_array_of.git' # Use ActiveModel has_secure_password # gem 'bcrypt', '~> 3.1.7' diff --git a/Gemfile.lock b/Gemfile.lock index cda2bdf70..631c0bfbe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,6 +6,15 @@ GIT chronic (>= 0.6.3) GIT + remote: git@github.com:AF83/has_array_of.git + revision: 37a0b19e71e8ed8a10876a994649d83756d953d4 + specs: + has_array_of (0.0.1) + activerecord (>= 4.0) + pg + railties (>= 4.0) + +GIT remote: git@github.com:AF83/stif-codifline-api.git revision: 72d53d7666736523b5cbef41a2de7e466d58ea1a specs: @@ -599,6 +608,7 @@ DEPENDENCIES google-analytics-rails guard guard-rspec + has_array_of! i18n-tasks inherited_resources jbuilder (~> 2.0) diff --git a/app/models/chouette/line.rb b/app/models/chouette/line.rb index c3a867caa..f2e3a2b08 100644 --- a/app/models/chouette/line.rb +++ b/app/models/chouette/line.rb @@ -18,6 +18,8 @@ class Chouette::Line < Chouette::ActiveRecord has_many :footnotes, :inverse_of => :line, :validate => :true, :dependent => :destroy accepts_nested_attributes_for :footnotes, :reject_if => :all_blank, :allow_destroy => true + belongs_to_array_in_many :referential_metadatas + attr_reader :group_of_line_tokens attr_accessor :transport_mode diff --git a/app/models/referential.rb b/app/models/referential.rb index 98c60f549..f8f8961ff 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -8,7 +8,6 @@ class Referential < ActiveRecord::Base validates_presence_of :time_zone validates_presence_of :upper_corner validates_presence_of :lower_corner - validates_presence_of :workbench validates_uniqueness_of :slug validates_uniqueness_of :name @@ -33,6 +32,7 @@ class Referential < ActiveRecord::Base has_many :companies, through: :line_referential has_many :group_of_lines, through: :line_referential has_many :networks, through: :line_referential + has_many :referential_metadatas belongs_to :stop_area_referential validates_presence_of :stop_area_referential diff --git a/app/models/referential_metadata.rb b/app/models/referential_metadata.rb new file mode 100644 index 000000000..7b1cea301 --- /dev/null +++ b/app/models/referential_metadata.rb @@ -0,0 +1,6 @@ +class ReferentialMetadata < ActiveRecord::Base + belongs_to :referential + belongs_to :referential_source, class_name: 'Referential' + + has_array_of :lines, class_name: 'Chouette::Line' +end diff --git a/db/migrate/20161019090255_create_referential_metadata.rb b/db/migrate/20161019090255_create_referential_metadata.rb new file mode 100644 index 000000000..d862e2df0 --- /dev/null +++ b/db/migrate/20161019090255_create_referential_metadata.rb @@ -0,0 +1,13 @@ +class CreateReferentialMetadata < ActiveRecord::Migration + def change + create_table :referential_metadata do |t| + t.references :referential, index: true + t.daterange :periode + t.integer :line_ids, array: true + t.index :line_ids, using: :gin + t.references :referential_source, index: true + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 63614f440..8bb6cf986 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161018121647) do +ActiveRecord::Schema.define(version: 20161019090255) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -377,6 +377,19 @@ ActiveRecord::Schema.define(version: 20161018121647) do add_index "pt_links", ["objectid"], :name => "pt_links_objectid_key", :unique => true + create_table "referential_metadata", force: true do |t| + t.integer "referential_id" + t.daterange "periode" + t.integer "line_ids", array: true + t.integer "referential_source_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "referential_metadata", ["line_ids"], :name => "index_referential_metadata_on_line_ids" + add_index "referential_metadata", ["referential_id"], :name => "index_referential_metadata_on_referential_id" + add_index "referential_metadata", ["referential_source_id"], :name => "index_referential_metadata_on_referential_source_id" + create_table "referentials", force: true do |t| t.string "name" t.string "slug" diff --git a/spec/factories/referential_metadata.rb b/spec/factories/referential_metadata.rb new file mode 100644 index 000000000..1ce965f02 --- /dev/null +++ b/spec/factories/referential_metadata.rb @@ -0,0 +1,9 @@ +FactoryGirl.define do + factory :referential_metadatum, :class => 'ReferentialMetadata' do + referential nil +periode "" +line_ids 1 +referential_source nil + end + +end diff --git a/spec/models/referential_metadata_spec.rb b/spec/models/referential_metadata_spec.rb new file mode 100644 index 000000000..6d1489ef8 --- /dev/null +++ b/spec/models/referential_metadata_spec.rb @@ -0,0 +1,6 @@ +require 'rails_helper' + +RSpec.describe ReferentialMetadata, :type => :model do + it { should belong_to(:referential) } + it { should belong_to(:referential_source) } +end diff --git a/spec/models/referential_spec.rb b/spec/models/referential_spec.rb index cde219ee1..25dd97bdd 100644 --- a/spec/models/referential_spec.rb +++ b/spec/models/referential_spec.rb @@ -6,4 +6,7 @@ describe Referential, :type => :model do referential = create(:referential) #expect(referential.rule_parameter_sets.size).to eq(1) end + + it { should have_many(:referential_metadatas) } + it { should belong_to(:workbench) } end |
