mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-04-08 07:46:59 +00:00
Clone links when cloning product variants
Only links within the same product are supported so far.
This commit is contained in:
@@ -32,9 +32,12 @@ module Spree
|
||||
end
|
||||
|
||||
def duplicate_variants
|
||||
product.variants.map do |variant|
|
||||
# Create a hash with mapping: { <orig-variant>: <new-variant>, }
|
||||
mapped_variants = product.variants.index_with do |variant|
|
||||
duplicate_variant(variant)
|
||||
end
|
||||
duplicate_variant_links(mapped_variants)
|
||||
mapped_variants.values
|
||||
end
|
||||
|
||||
def duplicate_variant(variant)
|
||||
@@ -47,6 +50,19 @@ module Spree
|
||||
end
|
||||
end
|
||||
|
||||
def duplicate_variant_links(mapped_variants)
|
||||
# Find any links between orig variants (links to/from another product are ignored)
|
||||
variant_links = VariantLink.where(source_variant: [mapped_variants.keys],
|
||||
target_variant: [mapped_variants.keys])
|
||||
# Link the new variants
|
||||
variant_links.find_each do |variant_link|
|
||||
VariantLink.create(
|
||||
source_variant: mapped_variants[variant_link.source_variant],
|
||||
target_variant: mapped_variants[variant_link.target_variant]
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def duplicate_image(image)
|
||||
new_image = image.dup
|
||||
new_image.attachment.attach(image.attachment_blob)
|
||||
|
||||
Reference in New Issue
Block a user