Problemas con has_many :through

Hola a todos.
Estoy empezando a conocer rails leyendo el libro “Beginning Rails from
beginning to professional” , y resulta que me paso algo absurdo
siguiendo el proyecto que manejan para los ejemplos dentro del libro,
tengo los siguientes codigos

en …/events/app/model/user.rb

class User < ActiveRecord::Base
has_many :events
has_many :registrations
has_many :activities, :through => :registrations, :source => :event
end

en …/events/app/model/event.rb

class Event < ActiveRecord::Base
belongs_to :user
has_many :registrations
has_many :attendees, :through => :registrations, :source => :user
has_and_belongs_to_many :categories
end

en …/events/app/model/registrations.rb

class Registrations < ActiveRecord::Base
belongs_to :user
belongs_to :event
end

en …/events/db/migrate/006_create_registrations.rb

class CreateRegistrations < ActiveRecord::Migration
def self.up
create_table :registrations do |t|
t.column :user_id, :integer
t.column :event_id, :integer
t.column :note, :string, :length => 400
t.column :created_at, :datetime

  # t.column :name, :string
end

end

def self.down
drop_table :registrations
end
end

cabe mencionar que estan igualitos a como los presenta el libro, (al
principio pense que era problema mio que lo habia escrito mal o algo asi
y no ,estan igualitos a el libro) la tabla de registrations si se creo.
El problema viene cuando pruebo en consola la asociacion en cuestion el
has_many el libro me dice que haga esto:

event = Event.find(:first)
=> #Event:0x3258d2c
user = User.create(:login => ‘simon’, :email => ‘[email protected]’,
:password ➥

=> ‘secret’)
=> #User:0x3251b1c

estos datos ya estan en la base

user.registrations.any? #aqui es donde ya no funciona

me sale el siguiente error

NameError:
./script/…/config/…/config/…/vendor/rails/activerecord/lib/…/…/activesupport/lib/active_support/dependencies.rb:100:in
const_missing': uninitialized constant Registration from ./script/../config/../config/../vendor/rails/activerecord/lib/active_record/base.rb:1246:incompute_type’
from
./script/…/config/…/config/…/vendor/rails/activerecord/lib/…/…/activesupport/lib/active_support/dependencies.rb:131:in
const_missing' from ./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:133:insend’
from
./script/…/config/…/config/…/vendor/rails/activerecord/lib/…/…/activesupport/lib/active_support/dependencies.rb:133:in
const_missing' from (eval):1:incompute_type’
from
./script/…/config/…/config/…/vendor/rails/activerecord/lib/active_record/reflection.rb:112:in
send' from ./script/../config/../config/../vendor/rails/activerecord/lib/active_record/reflection.rb:112:inklass’
from
./script/…/config/…/config/…/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb:174:in
construct_sql' from ./script/../config/../config/../vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb:6:ininitialize’
from
./script/…/config/…/config/…/vendor/rails/activerecord/lib/active_record/associations.rb:876:in
new' from ./script/../config/../config/../vendor/rails/activerecord/lib/active_record/associations.rb:876:inregistrations’
from (irb):5

ya no se que probar, no entiendo porque no funciona
espero me puedan ayudar, Gracias de antemano.

Por convenio los nombres las clases de los modelos ActiveRecord van en
singular, prueba a renombrar tu clase Registrations a Registration (y
recuerda renombrar también el archivo a registration.rb). Eso
seguramente arregle el problema.


Raul M. - Freelance Web D.
http://raul.murciano.net

MUchas Gracias Raul, tienes razon, hice lo que me dijiste y se soluciono
el problema yo solo probe cambiar el nombre de la clase pero no
renombraba el archivo

Gracias de nuevo.