问题
I have a model called produccion_alternativa. I added a new inflection rule in config/initializers/inflections.rb, like this:
inflect.irregular('produccion_alternativa', 'producciones_alternativas')
I have other model called productor that has a relation with produccion_alternativa:
class Productor < ActiveRecord::Base
has_many :producciones_alternativas
class ProduccionAlternativa < ActiveRecord::Base
belongs_to :productor
When a I try to get all the producciones_alternativas for a productor, I get this error:
irb(main):010:0> Productor.first.producciones_alternativas
NameError: uninitialized constant Productor::ProduccionesAlternativa
Any ideas? Thank you very much
回答1:
I see several others having the same problem. Couldn't find an answer why this happens. So in the meantime you could just try this:
has_many :producciones_alternativas, :class_name => "ProduccionAlternativa"
回答2:
I found another solution too. I added another rule on inflection.rb:
inflect.irregular('ProduccionAlternativa', 'ProduccionesAlternativas')
inflect.irregular('produccion_alternativa', 'producciones_alternativas')
At least, now it's working as I want. Thanx.
回答3:
Your Fail is that you pluralized both words in has_many
association. You used:
has_many :producciones_alternativas
but based on the class name ProduccionAlternativa
the plural is produccion_alternativas
because only the last word is pluralized! So this should work:
has_many :produccion_alternativas
To check the Plural of a word type "your_word".pluralize
in the rails console!
来源:https://stackoverflow.com/questions/4634043/issue-with-custom-inflections-in-ruby-on-rails-3-0-3