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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs