aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2016-10-19 12:19:52 +0200
committerXinhui2016-10-19 15:24:34 +0200
commit3416c562e3b139594b7cd267cf32f03b3982fcc0 (patch)
tree0d61b24637ec5d55507083c6cf3eea191f4938aa
parentdf75d5a41d71b06a12285153b7fb6616e575341b (diff)
downloadchouette-core-3416c562e3b139594b7cd267cf32f03b3982fcc0.tar.bz2
Model ReferentialMetadata
Refs #1782
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock10
-rw-r--r--app/models/chouette/line.rb2
-rw-r--r--app/models/referential.rb2
-rw-r--r--app/models/referential_metadata.rb6
-rw-r--r--db/migrate/20161019090255_create_referential_metadata.rb13
-rw-r--r--db/schema.rb15
-rw-r--r--spec/factories/referential_metadata.rb9
-rw-r--r--spec/models/referential_metadata_spec.rb6
-rw-r--r--spec/models/referential_spec.rb3
10 files changed, 66 insertions, 2 deletions
diff --git a/Gemfile b/Gemfile
index 7daf1b77e..ed8cb52ff 100644
--- a/Gemfile
+++ b/Gemfile
@@ -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