diff options
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/referential.rb | 12 | ||||
| -rw-r--r-- | app/models/referential_cloning.rb | 20 |
2 files changed, 27 insertions, 5 deletions
diff --git a/app/models/referential.rb b/app/models/referential.rb index da5791914..5a2e1d15d 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -171,14 +171,22 @@ class Referential < ActiveRecord::Base projection_type || "" end - after_create :autocreate_referential_metadata + after_create :autocreate_referential_metadata, :clone_schema def autocreate_referential_metadata self.create_referential_metadata if workbench end + def clone_schema + if self.created_from + ReferentialCloning.create(source_referential: self.created_from, target_referential: self) + end + end + before_create :create_schema def create_schema - Apartment::Tenant.create slug + if self.created_from.nil? + Apartment::Tenant.create slug + end end before_validation :assign_line_and_stop_area_referential, :on => :create diff --git a/app/models/referential_cloning.rb b/app/models/referential_cloning.rb index 8d765f985..9bf824ac5 100644 --- a/app/models/referential_cloning.rb +++ b/app/models/referential_cloning.rb @@ -2,6 +2,12 @@ class ReferentialCloning < ActiveRecord::Base include AASM belongs_to :source_referential, class_name: 'Referential' belongs_to :target_referential, class_name: 'Referential' + after_commit :perform_clone, :on => :create + + private + def perform_clone + ReferentialCloningWorker.perform_async(self.id) + end aasm column: :status do state :new, :initial => true @@ -9,16 +15,24 @@ class ReferentialCloning < ActiveRecord::Base state :successful state :failed - event :run do + event :run, after: :update_started_at do transitions :from => [:new, :failed], :to => :pending end - event :successful do + event :successful, after: :update_ended_at do transitions :from => [:pending, :failed], :to => :successful end - event :failed do + event :failed, after: :update_ended_at do transitions :from => :pending, :to => :failed end end + + def update_started_at + update_attribute(:started_at, Time.now) + end + + def update_ended_at + update_attribute(:ended_at, Time.now) + end end |
