module SitemapClassMethods

Public Instance Methods

create_sitemap_seo_records() click to toggle source
# File lib/acts_as_seoable/helpers/sitemap_helper.rb, line 5
def create_sitemap_seo_records
  Rails.application.reload_routes!
  routes = Rails.application.routes.routes.select { |r| r.defaults.include? :sitemap}
  row_routes = Array.new

  routes.each do |route|
    next if route.defaults[:sitemap] != true || route.verb != 'GET'
    
    static = route.defaults[:static] == true
    row = SitemapSeo.find_by_sitemap_controller_and_sitemap_action(route.defaults[:controller], route.defaults[:action])
    if row.nil?
      new_row = SitemapSeo.create(sitemap_controller: route.defaults[:controller], sitemap_action: route.defaults[:action],
                                  status: false, static: static)
      row_routes << new_row
    else
      row.update(static: static)
      row.save
      row_routes << row
    end
  end

  SitemapSeo.all.each do |sitemap_seo|
    next if row_routes.include? sitemap_seo

    sitemap_seo.delete
  end
end