Skip to content

Instantly share code, notes, and snippets.

@ksolvesnutra
Created August 21, 2020 11:48
Show Gist options
  • Save ksolvesnutra/fc15bf37fb2298c28917f0d3f74a121c to your computer and use it in GitHub Desktop.
Save ksolvesnutra/fc15bf37fb2298c28917f0d3f74a121c to your computer and use it in GitHub Desktop.
[issue#548] Script to update Products and Product Category related URLs in the content of various sections such as Products, Articles, Videos, Faqs, Studies Redirect-Pages, Sliding-Images, Content.
artical_arr = []
faq_arr = []
study_arr = []
video_arr = []
product_arr = []
trnsf_pg = []
sliding_img = []
cont_arr = []
Product.find_each do |prod|
Article.where("
content ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
content ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |article|
artical_arr << article
end
Faq.where("
answer ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
answer ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |faq|
faq_arr << faq
end
Study.where("
brief_description ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
brief_description ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |study|
study_arr << study
end
Video.where("
description ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
description ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |video|
video_arr << video
end
Product.where("
description ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
description ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%' OR
highlights ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
highlights ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%' OR
suggested_use ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
suggested_use ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%' OR
supplement_facts ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
supplement_facts ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%' OR
quality ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
quality ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%' OR
verbiage ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
verbiage ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |product|
product_arr << product
end
TransferPage.where("
url ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
url ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |transfer_page|
trnsf_pg << transfer_page
end
SlidingImage.where("
url ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
url ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |slid_img|
sliding_img << slid_img
end
Content.where("
body ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
body ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |content|
cont_arr << content
end
end
ProductCategory.find_each do |prod_cat|
Article.where("
content ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |article|
artical_arr << article
end
Faq.where("
answer ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |faq|
faq_arr << faq
end
Study.where("
brief_description ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |study|
study_arr << study
end
Video.where("
description ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |video|
video_arr << video
end
Product.where("
description ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%' OR
highlights ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%' OR
suggested_use ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%' OR
supplement_facts ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%' OR
quality ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%' OR
verbiage ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |product|
product_arr << product
end
TransferPage.where("
url ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |transfer_page|
trnsf_pg << transfer_page
end
SlidingImage.where("
url ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |slid_img|
sliding_img << slid_img
end
Content.where("
body ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |content|
cont_arr << content
end
end
[ artical_arr.uniq.count, faq_arr.uniq.count, study_arr.uniq.count, video_arr.uniq.count, product_arr.uniq.count, trnsf_pg.uniq.count, sliding_img.uniq.count, cont_arr.uniq.count ]
Product.find_each do |prod|
puts "Current Product: '#{prod.name}'";
puts "Product id: '#{prod.id}'";
Article.where("
content LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
content LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |article|
article.update_attributes(
content: article.content.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}")
)
puts "updated article: { #{article.title}, #{article.id} }";
end
Faq.where("
answer LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
answer LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |faq|
faq.update_attributes(
answer: faq.answer.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}")
)
puts "updated faq: { #{faq.question}, #{faq.id} }";
end
Study.where("
brief_description LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
brief_description LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |study|
study.update_attributes(
brief_description: study.brief_description.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}")
)
puts "updated study: { #{study.title}, #{study.id} }";
end
Video.where("
description LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
description LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |video|
video.update_attributes(
description: video.description.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}")
)
puts "updated video: { #{video.title}, #{video.id} }";
end
Product.where("
description LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
description LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%' OR
highlights LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
highlights LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%' OR
suggested_use LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
suggested_use LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%' OR
supplement_facts LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
supplement_facts LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%' OR
quality LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
quality LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%' OR
verbiage LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
verbiage LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |product|
product.update_attributes(
description: product.description.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}"),
highlights: product.highlights.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}"),
suggested_use: product.suggested_use.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}"),
supplement_facts: product.supplement_facts.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}"),
quality: product.quality.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}"),
verbiage: product.verbiage.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}")
)
puts "updated product: { #{product.name}, #{product.id} }";
end
TransferPage.where("
url LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
url LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |transfer_page|
transfer_page.update_attributes(
url: transfer_page.url.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}")
)
puts "updated transfer_page: { #{transfer_page.name}, #{transfer_page.id} }";
end
SlidingImage.where("
url LIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
url LIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |slid_img|
slid_img.update_attributes(
url: slid_img.url.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}")
)
puts "updated sliding_img: { #{slid_img.id} }";
end
Content.where("
body ILIKE '%products/#{prod.id}-#{prod.name.parameterize}%' OR
body ILIKE '%products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}%'
").each do |content|
content.update_attributes(
body: content.body.gsub("products/#{prod.id}-#{prod.name.parameterize}", "products/#{prod.slug}").gsub("products/#{prod.id}-#{CGI.escape(prod.name.downcase.gsub(" ", "-"))}", "products/#{prod.slug}")
)
puts "updated content: { #{content.id} }";
end
end
ProductCategory.find_each do |prod_cat|
puts "Current Product Category: '#{prod_cat.name}'";
puts "Product Category id: '#{prod_cat.id}'";
Article.where("
content LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |article|
article.update_attributes(
content: article.content.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}")
)
puts "updated article: { #{article.title}, #{article.id} }";
end
Faq.where("
answer LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |faq|
faq.update_attributes(
answer: faq.answer.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}")
)
puts "updated faq: { #{faq.question}, #{faq.id} }";
end
Study.where("
brief_description LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |study|
study.update_attributes(
brief_description: study.brief_description.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}")
)
puts "updated study: { #{study.title}, #{study.id} }";
end
Video.where("
description LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |video|
video.update_attributes(
description: video.description.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}")
)
puts "updated video: { #{video.title}, #{video.id} }";
end
Product.where("
description LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%' OR
highlights LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%' OR
suggested_use LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%' OR
supplement_facts LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%' OR
quality LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%' OR
verbiage LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |product|
product.update_attributes(
description: product.description.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}"),
highlights: product.highlights.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}"),
suggested_use: product.suggested_use.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}"),
supplement_facts: product.supplement_facts.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}"),
quality: product.quality.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}"),
verbiage: product.verbiage.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}")
)
puts "updated product: { #{product.name}, #{product.id} }";
end
TransferPage.where("
url LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |transfer_page|
transfer_page.update_attributes(
url: transfer_page.url.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}")
)
puts "updated transfer_page: { #{transfer_page.name}, #{transfer_page.id} }";
end
SlidingImage.where("
url LIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |slid_img|
slid_img.update_attributes(
url: slid_img.url.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}")
)
puts "updated sliding_img: { #{slid_img.id} }";
end
Content.where("
body ILIKE '%/products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}%'
").each do |content|
content.update_attributes(
body: content.body.gsub("products?q%5Bproduct_category_id_eq%5D=#{prod_cat.id}", "products/category/#{prod_cat.slug}")
)
puts "updated content: { #{content.id} }";
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment