aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2017-09-22 18:58:54 +0200
committerTeddy Wing2017-09-22 18:58:54 +0200
commitbeced2b5817da0082aa9f3af76581a524535d801 (patch)
treed8ccbd6db3e3cf6a3173b4e34e111e8a9f7af9ac
parent16f01969fedd429b2c7916eafb19a8a9263bce81 (diff)
downloadchouette-core-beced2b5817da0082aa9f3af76581a524535d801.tar.bz2
Add `has_many` association between `Referential` and `ReferentialSuite`
`ReferentialSuite` has many `Referential`s. Need to add a foreign key column to the `referentials` table to allow that to work. Refs #3519
-rw-r--r--app/models/referential.rb2
-rw-r--r--app/models/referential_suite.rb2
-rw-r--r--db/migrate/20170922165315_add_referential_suite_to_referentials.rb8
-rw-r--r--db/schema.rb5
-rw-r--r--spec/models/referential_spec.rb1
-rw-r--r--spec/models/referential_suite_spec.rb1
6 files changed, 18 insertions, 1 deletions
diff --git a/app/models/referential.rb b/app/models/referential.rb
index af08aa868..c7b52ddf8 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -45,6 +45,8 @@ class Referential < ActiveRecord::Base
has_many :stop_areas, through: :stop_area_referential
belongs_to :workbench
+ belongs_to :referential_suite
+
scope :ready, -> { where(ready: true) }
scope :in_periode, ->(periode) { where(id: referential_ids_in_periode(periode)) }
scope :include_metadatas_lines, ->(line_ids) { where('referential_metadata.line_ids && ARRAY[?]::bigint[]', line_ids) }
diff --git a/app/models/referential_suite.rb b/app/models/referential_suite.rb
index c2f40913e..9fd25ef3f 100644
--- a/app/models/referential_suite.rb
+++ b/app/models/referential_suite.rb
@@ -1,4 +1,6 @@
class ReferentialSuite < ActiveRecord::Base
belongs_to :new, class_name: 'Referential'
belongs_to :current, class_name: 'Referential'
+
+ has_many :referentials
end
diff --git a/db/migrate/20170922165315_add_referential_suite_to_referentials.rb b/db/migrate/20170922165315_add_referential_suite_to_referentials.rb
new file mode 100644
index 000000000..a01ba4d40
--- /dev/null
+++ b/db/migrate/20170922165315_add_referential_suite_to_referentials.rb
@@ -0,0 +1,8 @@
+class AddReferentialSuiteToReferentials < ActiveRecord::Migration
+ def change
+ add_reference :referentials, :referential_suite,
+ index: true,
+ foreign_key: true,
+ type: :bigint
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 43abbd3af..89f002aee 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: 20170922161352) do
+ActiveRecord::Schema.define(version: 20170922165315) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -632,9 +632,11 @@ ActiveRecord::Schema.define(version: 20170922161352) do
t.datetime "archived_at"
t.integer "created_from_id", limit: 8
t.boolean "ready", default: false
+ t.integer "referential_suite_id", limit: 8
end
add_index "referentials", ["created_from_id"], name: "index_referentials_on_created_from_id", using: :btree
+ add_index "referentials", ["referential_suite_id"], name: "index_referentials_on_referential_suite_id", using: :btree
create_table "route_sections", id: :bigserial, force: :cascade do |t|
t.integer "departure_id", limit: 8
@@ -997,6 +999,7 @@ ActiveRecord::Schema.define(version: 20170922161352) do
add_foreign_key "journey_patterns", "stop_points", column: "departure_stop_point_id", name: "departure_point_fkey", on_delete: :nullify
add_foreign_key "journey_patterns_stop_points", "journey_patterns", name: "jpsp_jp_fkey", on_delete: :cascade
add_foreign_key "journey_patterns_stop_points", "stop_points", name: "jpsp_stoppoint_fkey", on_delete: :cascade
+ add_foreign_key "referentials", "referential_suites"
add_foreign_key "route_sections", "stop_areas", column: "arrival_id"
add_foreign_key "route_sections", "stop_areas", column: "departure_id"
add_foreign_key "routes", "routes", column: "opposite_route_id", name: "route_opposite_route_fkey"
diff --git a/spec/models/referential_spec.rb b/spec/models/referential_spec.rb
index f9ace08cc..bb8fabb2e 100644
--- a/spec/models/referential_spec.rb
+++ b/spec/models/referential_spec.rb
@@ -10,6 +10,7 @@ describe Referential, :type => :model do
it { should have_many(:metadatas) }
it { should belong_to(:workbench) }
+ it { should belong_to(:referential_suite) }
context ".referential_ids_in_periode" do
it 'should retrieve referential id in periode range' do
diff --git a/spec/models/referential_suite_spec.rb b/spec/models/referential_suite_spec.rb
index 73a616ae1..771187b55 100644
--- a/spec/models/referential_suite_spec.rb
+++ b/spec/models/referential_suite_spec.rb
@@ -1,4 +1,5 @@
RSpec.describe ReferentialSuite, type: :model do
it { should belong_to(:new).class_name('Referential') }
it { should belong_to(:current).class_name('Referential') }
+ it { should have_many(:referentials) }
end