# Rails is misinterpreting model name

**URL:** <https://www.ruby-forum.com/t/rails-is-misinterpreting-model-name/140656>\
**Category:** Rails\
**Created:** [June 17, 2008, 7:46am UTC](https://www.ruby-forum.com/t/rails-is-misinterpreting-model-name/140656 "2008-06-17T07:46:59Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![shenry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbce88/32.png) [@shenry](https://www.ruby-forum.com/u/shenry)\
**Post date:** [June 17, 2008, 7:46am UTC](https://www.ruby-forum.com/t/rails-is-misinterpreting-model-name/140656/1 "2008-06-17T07:46:59Z")

</div>

I have two models

class Ferm \< AR::Base  
has\_many :daily\_analyses  
end

class DailyAnalysis \< AR::Base  
belongs\_to :ferm  
end

$ script/console  
Loading development environment (Rails 2.0.2)

> > f = Ferm.find(:first)  
> > =\> #\<Ferm … \>
> 
> > f.daily\_analyses  
> > NameError: uninitialized constant Ferm::DailyAnalyAsis  
> > from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/  
> > active\_support/dependencies.rb:478:in `const_missing' from /Library/Ruby/Gems/1.8/gems/activerecord-2.0.2/lib/active_record/ base.rb:1750:in`compute\_type’  
> > from /Library/Ruby/Gems/1.8/gems/activerecord-2.0.2/lib/active\_record/  
> > reflection.rb:125:in `send' from /Library/Ruby/Gems/1.8/gems/activerecord-2.0.2/lib/active_record/ reflection.rb:125:in`klass’  
> > from /Library/Ruby/Gems/1.8/gems/activerecord-2.0.2/lib/active\_record/  
> > associations/has\_many\_association.rb:152:in `construct_sql' from /Library/Ruby/Gems/1.8/gems/activerecord-2.0.2/lib/active_record/ associations/has_many_association.rb:6:in`initialize’  
> > from /Library/Ruby/Gems/1.8/gems/activerecord-2.0.2/lib/active\_record/  
> > associations.rb:1032:in `new' from /Library/Ruby/Gems/1.8/gems/activerecord-2.0.2/lib/active_record/ associations.rb:1032:in`daily\_analyses’  
> > from (irb):3

For some reason Rails is converting “daily\_analyses” to  
“daily\_analy\_asis”. Using the pluralizer and tableizer for  
“daily\_analysis” correctly give “daily\_analysis”.

Should I roll back my schema and rename the table something other than  
“daily\_analysis?”

Thanks --SH

---

<div class="post-metadata">

**Author:** ![shenry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbce88/32.png) [@shenry](https://www.ruby-forum.com/u/shenry)\
**Post date:** [June 17, 2008, 9:17am UTC](https://www.ruby-forum.com/t/rails-is-misinterpreting-model-name/140656/2 "2008-06-17T09:17:01Z")

</div>

Hmmm, that’s weird.  
After successfully reproducing your problem, I added the following to  
config/initializers/inflections.rb

Inflector.inflections do |inflect|  
inflect.singular ‘daily\_analyses’, ‘daily\_analysis’  
end

Now, in the console:

> > “daily\_analyses”.singularize # returns “daily\_analysis”  
> > “daily\_analyses”.classify #returns DailyAnalysis

But calling the association on Ferm still yields an error.

😮

Giuseppe

shenry wrote:

> I have two models
> 
> class Ferm \< AR::Base  
> has\_many :daily\_analyses  
> end
> 
> class DailyAnalysis \< AR::Base  
> belongs\_to :ferm  
> end
> 
> $ script/console  
> Loading development environment (Rails 2.0.2)
> 
> > > f = Ferm.find(:first)  
> > > =\> #\<Ferm … \>
> > 
> > > f.daily\_analyses  
> > > NameError: uninitialized constant Ferm::DailyAnalyAsis

---

<div class="post-metadata">

**Author:** ![shenry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbce88/32.png) [@shenry](https://www.ruby-forum.com/u/shenry)\
**Post date:** [June 17, 2008, 4:49pm UTC](https://www.ruby-forum.com/t/rails-is-misinterpreting-model-name/140656/3 "2008-06-17T16:49:37Z")

</div>

You can avoid inflection hassles entirely and just explicitly tell it  
which class to use:

class Ferm \< AR::Base  
has\_many :daily\_analyses, :class\_name =\> “DailyAnalysis”  
end

class DailyAnalysis \< AR::Base  
belongs\_to :ferm  
end

---

<div class="post-metadata">

**Author:** ![shenry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbce88/32.png) [@shenry](https://www.ruby-forum.com/u/shenry)\
**Post date:** [June 17, 2008, 2:20pm UTC](https://www.ruby-forum.com/t/rails-is-misinterpreting-model-name/140656/4 "2008-06-17T14:20:49Z")

</div>

Giuseppe B. wrote:

> Hmmm, that’s weird.  
> After successfully reproducing your problem, I added the following to  
> config/initializers/inflections.rb
> 
> Inflector.inflections do |inflect|  
> inflect.singular ‘daily\_analyses’, ‘daily\_analysis’  
> end

Shouldn’t that be

```
inflect.singular 'analyses', 'analysis'

```

?

---

<div class="post-metadata">

**Author:** ![shenry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbce88/32.png) [@shenry](https://www.ruby-forum.com/u/shenry)\
**Post date:** [June 17, 2008, 5:05pm UTC](https://www.ruby-forum.com/t/rails-is-misinterpreting-model-name/140656/5 "2008-06-17T17:05:46Z")

</div>

with :

Inflector.inflections do |inflect|  
inflect.irregular ‘daily\_analysis’, ‘daily\_analyses’  
end

I get …

> > “daily\_analyses”.classify  
> > =\> “DailyAnalysis”
> 
> > ferm.daily\_analyses  
> > =\> NameError: uninitialized constant Ferm::DailyAnalyAsis (…etc…)
> 
> > “daily\_analyses”.camelize  
> > =\>“DailyAnalyses” # shouldn’t this camelize to ‘DailyAnalysis’?
> 
> > “daily\_analyses”.camelize.classify  
> > =\>“DailyAnalyAsis”

it seems like when rails is putting together the Ferm::DailyAnalysis  
relationship it first camelizes “daily\_analyses” into “DailyAnalyses”  
then classifies it incorrectly as “DailyAnalyAsis”.

I think I’ll just change my table name to something like “daily”.

SH

---

<div class="post-metadata">

**Author:** ![shenry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbce88/32.png) [@shenry](https://www.ruby-forum.com/u/shenry)\
**Post date:** [June 18, 2008, 5:04am UTC](https://www.ruby-forum.com/t/rails-is-misinterpreting-model-name/140656/6 "2008-06-18T05:04:01Z")

</div>

@Philp,

I tried your suggestion, same result as the other things I tried.

@Max,

Works great, very simple solution. Thanks,

SH

---

<div class="post-metadata">

**Author:** ![shenry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbce88/32.png) [@shenry](https://www.ruby-forum.com/u/shenry)\
**Post date:** [June 17, 2008, 8:58pm UTC](https://www.ruby-forum.com/t/rails-is-misinterpreting-model-name/140656/7 "2008-06-17T20:58:34Z")

</div>

shenry wrote:

> Inflector.inflections do |inflect|  
> inflect.irregular ‘daily\_analysis’, ‘daily\_analyses’  
> end

That inflects too much.

Did anyone try my suggestion?

inflect.irregular ‘analysis’, ‘analyses’

It would be the same for ‘daily\_crisis’ to ‘daily\_crises’. (-:
