diff options
| author | Xinhui | 2016-10-26 11:43:02 +0200 |
|---|---|---|
| committer | Xinhui | 2016-10-26 11:43:02 +0200 |
| commit | 4e9215c718e81921cbcfe1a78cf8542b5ecb4aa3 (patch) | |
| tree | 54edbc5d2117640f46a3192e0a3151f73495c202 /app/models/referential.rb | |
| parent | db300abfa571285500830525f893da851a96c093 (diff) | |
| download | chouette-core-4e9215c718e81921cbcfe1a78cf8542b5ecb4aa3.tar.bz2 | |
Referential clonning refactoring + clone metadatas
Refs #1863
Diffstat (limited to 'app/models/referential.rb')
| -rw-r--r-- | app/models/referential.rb | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/app/models/referential.rb b/app/models/referential.rb index 56d530de3..fc093c54c 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -35,8 +35,8 @@ class Referential < ActiveRecord::Base has_many :group_of_lines, through: :line_referential has_many :networks, through: :line_referential - has_one :referential_metadata - accepts_nested_attributes_for :referential_metadata + has_many :referential_metadatas + accepts_nested_attributes_for :referential_metadatas belongs_to :stop_area_referential validates_presence_of :stop_area_referential @@ -171,38 +171,44 @@ class Referential < ActiveRecord::Base projection_type || "" end - after_create :autocreate_referential_metadata, :clone_schema - def autocreate_referential_metadata - self.create_referential_metadata if workbench + before_validation :assign_line_and_stop_area_referential, :on => :create, if: :workbench + before_create :create_schema, unless: :created_from + + after_create :create_referential_metadata, if: :workbench, unless: :created_from + after_create :clone_referential_metadatas, if: :created_from + after_create :clone_schema, if: :created_from + + before_destroy :destroy_schema + before_destroy :destroy_jobs + + def create_referential_metadata + self.referential_metadatas.create end - def clone_schema - if self.created_from - ReferentialCloning.create(source_referential: self.created_from, target_referential: self) + def clone_referential_metadatas + self.created_from.referential_metadatas.each do |meta| + self.referential_metadatas << ReferentialMetadata.new_from(meta) end + self.save + end + + def clone_schema + ReferentialCloning.create(source_referential: self.created_from, target_referential: self) end - before_create :create_schema def create_schema - if self.created_from.nil? - Apartment::Tenant.create slug - end + Apartment::Tenant.create slug end - before_validation :assign_line_and_stop_area_referential, :on => :create def assign_line_and_stop_area_referential - if workbench - self.line_referential = workbench.line_referential - self.stop_area_referential = workbench.stop_area_referential - end + self.line_referential = workbench.line_referential + self.stop_area_referential = workbench.stop_area_referential end - before_destroy :destroy_schema def destroy_schema Apartment::Tenant.drop slug end - before_destroy :destroy_jobs def destroy_jobs #Ievkit.delete_jobs(slug) true |
