diff --git a/app/models/order_cycle.rb b/app/models/order_cycle.rb index b6b2e70e1b..9ddde06edd 100644 --- a/app/models/order_cycle.rb +++ b/app/models/order_cycle.rb @@ -6,6 +6,8 @@ class OrderCycle < ActiveRecord::Base has_many :exchanges, :dependent => :destroy + has_and_belongs_to_many :schedules, join_table: 'order_cycle_schedules' + # TODO: DRY the incoming/outgoing clause used in several cases below # See Spree::Product definition, scopes variants and variants_including_master # This will require these accessors to be renamed diff --git a/app/models/schedule.rb b/app/models/schedule.rb index e1d70f4a5e..d6b505ba4d 100644 --- a/app/models/schedule.rb +++ b/app/models/schedule.rb @@ -1,3 +1,5 @@ class Schedule < ActiveRecord::Base - # attr_accessible :title, :body + has_and_belongs_to_many :order_cycles, join_table: 'order_cycle_schedules' + + attr_sccessible :name, :order_cycle_ids end diff --git a/db/migrate/20160630055825_create_order_cycle_schedules.rb b/db/migrate/20160630055825_create_order_cycle_schedules.rb new file mode 100644 index 0000000000..99147467c9 --- /dev/null +++ b/db/migrate/20160630055825_create_order_cycle_schedules.rb @@ -0,0 +1,14 @@ +class CreateOrderCycleSchedules < ActiveRecord::Migration + def change + create_table :order_cycle_schedules do |t| + t.references :order_cycle, null: false + t.references :schedule, null: false + end + + add_index :order_cycle_schedules, :order_cycle_id + add_index :order_cycle_schedules, :schedule_id + + add_foreign_key :order_cycle_schedules, :order_cycles, name: 'oc_schedules_order_cycle_id_fk' + add_foreign_key :order_cycle_schedules, :schedules, name: 'oc_schedules_schedule_id_fk' + end +end diff --git a/db/schema.rb b/db/schema.rb index 3b1696f879..b4934a2b08 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -305,6 +305,14 @@ ActiveRecord::Schema.define(:version => 20170921065259) do add_index "inventory_items", ["enterprise_id", "variant_id"], :name => "index_inventory_items_on_enterprise_id_and_variant_id", :unique => true + create_table "order_cycle_schedules", :force => true do |t| + t.integer "order_cycle_id", :null => false + t.integer "schedule_id", :null => false + end + + add_index "order_cycle_schedules", ["order_cycle_id"], :name => "index_order_cycle_schedules_on_order_cycle_id" + add_index "order_cycle_schedules", ["schedule_id"], :name => "index_order_cycle_schedules_on_schedule_id" + create_table "order_cycles", :force => true do |t| t.string "name" t.datetime "orders_open_at" @@ -1184,6 +1192,9 @@ ActiveRecord::Schema.define(:version => 20170921065259) do add_foreign_key "exchanges", "enterprises", name: "exchanges_sender_id_fk", column: "sender_id" add_foreign_key "exchanges", "order_cycles", name: "exchanges_order_cycle_id_fk" + add_foreign_key "order_cycle_schedules", "order_cycles", name: "oc_schedules_order_cycle_id_fk" + add_foreign_key "order_cycle_schedules", "schedules", name: "oc_schedules_schedule_id_fk" + add_foreign_key "order_cycles", "enterprises", name: "order_cycles_coordinator_id_fk", column: "coordinator_id" add_foreign_key "producer_properties", "enterprises", name: "producer_properties_producer_id_fk", column: "producer_id"