rsl / stringex

Some [hopefully] useful extensions to Ruby’s String class. It is made up of three libraries: ActsAsUrl [permalink solution with better character translation], Unidecoder [Unicode to Ascii transliteration], and StringExtensions [miscellaneous helper methods for the String class].
MIT License
984 stars 158 forks source link

initialize_urls not updating slugs as expected. #184

Open sergiotapia opened 8 years ago

sergiotapia commented 8 years ago

I have a Company model, with fields name and slug:

class Company < ActiveRecord::Base
  acts_as_url :name, url_attribute: :slug
end

For new records, the gem converts asian characters to phonetic letters fine. Now I'm just trying to do the same for all of the existing records in our database.

For example here's one existing record we want to fix the slug for:

[1] pry(main)> Company.last.name
=> "Working 你好"

[2] pry(main)> Company.last.slug
=> "----"

After running the initialize_urls method, I expect the slug to be updated with the phonetic letters, but they don't change.

Here's the rake task that starts off the process:

# Rake task that iterates through all of the Companies in the database
# and regenerates their slug values from their name attribute.
task regenerate_company_slugs: :environment do
  Company.initialize_urls
end
fauxparse commented 8 years ago

URLs will only be updated when the slug is nil.

rsl commented 7 years ago

what do you think about having another method do this functionality. initialize [to me] is the right term here as it's [to me] stating it will set one if not set. thoughts?