Class: OnboardOnRails::TourCopier
- Inherits:
-
Object
- Object
- OnboardOnRails::TourCopier
- Defined in:
- app/services/onboard_on_rails/tour_copier.rb
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(original) ⇒ TourCopier
constructor
A new instance of TourCopier.
Constructor Details
#initialize(original) ⇒ TourCopier
Returns a new instance of TourCopier.
7 8 9 |
# File 'app/services/onboard_on_rails/tour_copier.rb', line 7 def initialize(original) @original = original end |
Class Method Details
.call(original) ⇒ Object
3 4 5 |
# File 'app/services/onboard_on_rails/tour_copier.rb', line 3 def self.call(original) new(original).call end |
Instance Method Details
#call ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/services/onboard_on_rails/tour_copier.rb', line 11 def call new_tour = @original.dup new_tour.name = "#{@original.name} #{I18n.t('onboard_on_rails.admin.tours.copy_suffix')}" new_tour.status = "draft" ActiveRecord::Base.transaction do new_tour.save! @original.steps.order(:position).each do |step| new_step = step.dup new_step.tour = new_tour new_step.save! end end new_tour rescue ActiveRecord::RecordInvalid @original.dup end |