Problem with has_many and belongs_to: NameError: uninitialized constant User::Recipy

Hello,

I’m learning to use ORM system. I read a lot of content but i can’t get it to work.

class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|

  t.column :email, :string
  t.column :nome, :string
  t.timestamps
end

end

def self.down
drop_table :users
end
end

class CreateRecipies < ActiveRecord::Migration

def self.up
create_table :recipies do |t|
t.column :titulo, :string
t.column :descricao, :string
t.column :user_id, :integer
t.column :recipie_id, :integer
t.timestamps

end

end

def self.down
drop_table :recipies
end
end

class User < ActiveRecord::Base
has_many :recipies
end

class Recipie < ActiveRecord::Base
belongs_to :user

end

At console i’m typing

usr = Users.find(1)

recipie = usr.recipies
NameError: uninitialized constant User::Recipy
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:492:in `const_missing’

from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:1909:in `compute_type'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/reflection.rb:129:in `send'

from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/reflection.rb:129:in `klass'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/reflection.rb:137:in `quoted_table_name'

from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/associations/has_many_association.rb:84:in `construct_sql'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/associations/association_collection.rb:8:in `initialize'

from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/associations.rb:1128:in `new'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/associations.rb:1128:in `recipies'

from (irb):2

Why?

Thanks for your attention!

NameError: uninitialized constant User::Recipy

Check your spelling.

-e

Luiz Vitor Martinez Cardoso wrote:

Luiz Vitor Martinez Cardoso wrote:

class User < ActiveRecord::Base
  has_many :recipies
end

class Recipie < ActiveRecord::Base
  belongs_to :user
end

At console i'm typing

usr = Users.find(1)

recipie = usr.recipies

NameError: uninitialized constant User::Recipy
    from

In Rails the convention is to make Model name singular and the
corresponding class name is plural as in your case it is users so
according to rule the model name should be just User with U capital now
to access data from users table you need to do usr=User.find(1) so will
get your result confirm the singular model name by looking the class
name of the corresponding model in models folder....

try this...