diff --git a/app/models/exercise.rb b/app/models/exercise.rb index 3ff49ad8..b2b27af4 100644 --- a/app/models/exercise.rb +++ b/app/models/exercise.rb @@ -14,7 +14,8 @@ class Exercise < ActiveRecord::Base has_and_belongs_to_many :proxy_exercises has_many :user_proxy_exercise_exercises - has_and_belongs_to_many :exercise_collections + has_many :exercise_collection_items + has_many :exercise_collections, through: :exercise_collection_items has_many :user_exercise_interventions has_many :interventions, through: :user_exercise_interventions has_many :exercise_tags diff --git a/app/models/exercise_collection.rb b/app/models/exercise_collection.rb index 5c159dda..fa00e521 100644 --- a/app/models/exercise_collection.rb +++ b/app/models/exercise_collection.rb @@ -1,7 +1,8 @@ class ExerciseCollection < ActiveRecord::Base include TimeHelper - has_and_belongs_to_many :exercises + has_many :exercise_collection_items + has_many :exercises, through: :exercise_collection_items belongs_to :user, polymorphic: true def exercise_working_times diff --git a/app/models/exercise_collection_item.rb b/app/models/exercise_collection_item.rb new file mode 100644 index 00000000..c7b01f20 --- /dev/null +++ b/app/models/exercise_collection_item.rb @@ -0,0 +1,4 @@ +class ExerciseCollectionItem < ActiveRecord::Base + belongs_to :exercise_collection + belongs_to :exercise +end diff --git a/db/migrate/20180703125302_create_exercise_collection_items.rb b/db/migrate/20180703125302_create_exercise_collection_items.rb new file mode 100644 index 00000000..c881c8a5 --- /dev/null +++ b/db/migrate/20180703125302_create_exercise_collection_items.rb @@ -0,0 +1,13 @@ +class CreateExerciseCollectionItems < ActiveRecord::Migration + def up + rename_table :exercise_collections_exercises, :exercise_collection_items + add_column :exercise_collection_items, :position, :integer, default: 0, null: false + add_column :exercise_collection_items, :id, :primary_key + end + + def down + remove_column :exercise_collection_items, :position + remove_column :exercise_collection_items, :id + rename_table :exercise_collection_items, :exercise_collections_exercises + end +end diff --git a/db/schema.rb b/db/schema.rb index 73a2c228..ae1398a6 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: 20180515110030) do +ActiveRecord::Schema.define(version: 20180703125302) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -114,6 +114,15 @@ ActiveRecord::Schema.define(version: 20180515110030) do t.boolean "network_enabled" end + create_table "exercise_collection_items", force: :cascade do |t| + t.integer "exercise_collection_id" + t.integer "exercise_id" + t.integer "position", default: 0, null: false + end + + add_index "exercise_collection_items", ["exercise_collection_id"], name: "index_exercise_collection_items_on_exercise_collection_id", using: :btree + add_index "exercise_collection_items", ["exercise_id"], name: "index_exercise_collection_items_on_exercise_id", using: :btree + create_table "exercise_collections", force: :cascade do |t| t.string "name" t.datetime "created_at" @@ -125,14 +134,6 @@ ActiveRecord::Schema.define(version: 20180515110030) do add_index "exercise_collections", ["user_type", "user_id"], name: "index_exercise_collections_on_user_type_and_user_id", using: :btree - create_table "exercise_collections_exercises", id: false, force: :cascade do |t| - t.integer "exercise_collection_id" - t.integer "exercise_id" - end - - add_index "exercise_collections_exercises", ["exercise_collection_id"], name: "index_exercise_collections_exercises_on_exercise_collection_id", using: :btree - add_index "exercise_collections_exercises", ["exercise_id"], name: "index_exercise_collections_exercises_on_exercise_id", using: :btree - create_table "exercise_tags", force: :cascade do |t| t.integer "exercise_id" t.integer "tag_id"