So we have a string that has been "humanized" - and all the underscores have been stripped out and replaced by spaces, and it's been nicely capitalised (sorry, make that "capitalize"d). So how do we go back the other way?
Plonk the following into config/initializers/inflections.rb (or if you're using a legacy Rails, drop it onto the end of config/environments.rb).
module ActiveSupport::Inflector # does the opposite of humanize.... mostly. Basically does a # space-substituting .underscore def dehumanize(the_string) result = the_string.to_s.dup result.downcase.gsub(/ +/,'_') end end class String def dehumanize ActiveSupport::Inflector.dehumanize(self) end end
Note: it will not reverse any speccy stuff like adding back any "_id"s etc, but it does mean you can do something along the lines of:
assert_equal "network_type", "Network type".dehumanize
2 comments:
Hmm, what about name "computerize".
LOL - yep , that's a valid alternative :)
Post a Comment