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...