Forum: Ruby on Rails Funny singularization/constantization in scaffold controller

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
792177ef1f60e67f361308c2ac192280?d=identicon&s=25 the goob (Guest)
on 2007-01-21 08:05
(Received via mailing list)
Hi all.  I'm new to Ruby and Rails so please bear with.  I'm creating
an app to maintain a birders life list.  One of the Models I need is
Genus.  The plural of Genus is Genera.  So, my table is titled Genera
and in my genus.rb I have the line  'self.table_name = "genera"'.  My
first hurdle was that when I generate the scaffold it still wanted a
table called genus.  Got around that by creating a view genus as
suggested somewhere.  Now the scaffold (genus_maint) generates but when
I try to execute I get a  "uninitialized constant Genu" when the list
method is trying to paginate:

'@genus_pages, @genus = paginate :genus, :per_page => 10'

It's as if rails is trying to singularize "genus".  Actually, what it
is really trying to do is constantize it.

Here's the full trace:

/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:123:in
`const_missing'
/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:131:in
`const_missing'
/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/inflector.rb:161:in
`constantize'
/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/core_ext/string/inflections.rb:59:in
`constantize'
/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/pagination.rb:194:in
`paginator_and_collection_for'
/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/pagination.rb:129:in
`paginate'
#{RAILS_ROOT}/app/controllers/genus_maint_controller.rb:12:in `list'
#{RAILS_ROOT}/app/controllers/genus_maint_controller.rb:3:in `index'
/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/bin/mongrel_rails:18


Hope this looks okay.  I haven't tried any formatting on this question.

TIA for any advice.

the goob
792177ef1f60e67f361308c2ac192280?d=identicon&s=25 the goob (Guest)
on 2007-01-21 08:14
(Received via mailing list)
Hmmm.
Maybe in environment.rb an inflection rule?
Sorry, should have looked a little farther before posting.
792177ef1f60e67f361308c2ac192280?d=identicon&s=25 the goob (Guest)
on 2007-01-21 08:32
(Received via mailing list)
Okay. modified environment.rb with:

Inflector.inflections do |inflect|
    inflect.irregular 'genus', 'genera'
end

regenerated the model (still had to had the self.table_name = "genera"
to genus.rb)

regenerated the scaffold and voila
3e6bbd5a01437feec48adf3838b15d91?d=identicon&s=25 askegg (Guest)
on 2007-01-21 21:27
(Received via mailing list)
the goob wrote:
> Hi all.  I'm new to Ruby and Rails so please bear with.  I'm creating
> an app to maintain a birders life list.  One of the Models I need is
> Genus.  The plural of Genus is Genera.

Rails is not *that* clever when working out the plural or singular
versions of names - it makes good guesses though.  You will need to
specify this in your config/environment.rb file:

Inflector.inflections do |inflect|
  inflect.irregular 'genus', 'genera'
end
Aafa8848c4b764f080b1b31a51eab73d?d=identicon&s=25 Phlip (Guest)
on 2007-01-21 22:17
(Received via mailing list)
askegg wrote:

> Inflector.inflections do |inflect|
>  inflect.irregular 'genus', 'genera'
> end

Can't you just

   require 'latin'

?

<a pause>

Ouch! Don't hit! Don't hit!!

--
  Phlip
  http://www.greencheese.us/ZeekLand <-- NOT a blog!!!
792177ef1f60e67f361308c2ac192280?d=identicon&s=25 Jeffrey Mills (Guest)
on 2007-01-30 04:18
(Received via mailing list)
Ha

require 'little_latin'
require 'less_greek'
whatever works

this got caught by my spam filter so a slow reply.

take care
This topic is locked and can not be replied to.