Rails ActiveSupport Inflections
Posted by: Prachi | 04 Jul 2014 | CommentsWe know, In Rails the Inflector
transforms words from singular to plural, class names to table names .
The default inflections for pluralization, singularization, and uncountable words are kept in inflections.rb
.
In this post, we will go through one example explaining the inflections .
Consider, leaves_controller
with Leave model
.
For this controller routes generated are as follows -
new_leafe GET /leaves/new(.:format) leaves#new
edit_leafe GET /leaves/:id/edit(.:format) leaves#edit
leafe GET /leaves/:id(.:format) leaves#show
> 'leaves'.singularize
=> "leafe"
here, the singularize format of ‘leaves’ is taken as ‘leafe’ .
Suppose, we want to change the singularize format to ‘leaf’, then -
Add rule in config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'leaf', 'leaves'
end
Now, check routes for same -
new_leaf GET /leaves/new(.:format) leaves#new
edit_leaf GET /leaves/:id/edit(.:format) leaves#edit
leaf GET /leaves/:id(.:format) leaves#show
> 'leaves'.singularize
=> "leaf"
It Works! In this way, by adding inflection
rules, we can override naming conventions in rails .