NameError que no comprendo

Hola a todos. Tengo un problema…

Tengo 2 clases, clan y mafia. una mafia tiene un clan (clan_id) y un
clan varias mafias…

class Clan < ActiveRecord::Base
has_many :mafia
end

class Mafia < ActiveRecord::Base
belongs_to :clan
end

Ahora… desde el controlador de mafias me va todo bien, puedo acceder a
mafia.clan sin problema, pero al reves no. Pongo el codigo del metodo
del controlador de clanes que tengo

def details
identificador=@params[:id]
if identificador!=nil
@clan=Clan.find(identificador)
@[email protected]
else
redirect_to :action=>:list
end
end

la linea @[email protected] es la que me da el error siguiente:

NameError in Admin/clansController#details

c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:100:in
`const_missing’: uninitialized constant Mafium

No tengo ni idea de porque pasa eso, espero que me podais ayudar.

Muchas gracias

Pues me da a mí que esto va de plurales e inglés.

En tu modelo Clan deberías decir que un clan has_many mafias, en plural.
Es decir, que un clan tiene muchas mafias.

Como le dices que un clan tiene muchas “mafia”, él cree que “mafia” es
una palabra en plural, y en inglés las palabras que forman plural en ‘a’
son las que acaban en “um” por aquello del latín (como
curriculum->curricula).

Así que cuando a clan le pides “mafia” él trata de buscar el objeto
“mafium” en singular.

Probablemente poniendo el has_many a “mafias” se arregle el tema.

saludos,

j

Xarc
escribió:> Tengo 2 clases, clan y mafia. una mafia tiene un clan (clan_id) y un

clan varias mafias…

class Clan < ActiveRecord::Base
has_many :mafia
end

class Mafia < ActiveRecord::Base
belongs_to :clan
end

la linea @[email protected] es la que me da el error siguiente:

Tal y como lo tienes modelado, yo probaría a usar el plural “mafias”:

class Clan < ActiveRecord::Base
has_many :mafias # <-- plural aqui!
end

class Mafia < ActiveRecord::Base
belongs_to :clan
end

def details
identificador=@params[:id]
if identificador!=nil
@clan=Clan.find(identificador)
@[email protected] # <-- plural aqui!
else
redirect_to :action=>:list
end
end

¿Podrías probar
así?
Saludos,
Raul

ostras, pues me ha funcionado… Muchisimas gracias…
por cierto, gracias por contestar tan deprisa, venia a postear una
alternativa que me ha fincionado:

@mafias=Mafia.find_all_by_clan_id @clan.id

pero no me hacia mucha gracia hacerlo asi.

Insisto, muchas gracias, soy nuevo en ruby y en ror y hay cosas que se
me escapan :smiley:

Raul M. wrote:

Xarc
escribi�:> Tengo 2 clases, clan y mafia. una mafia tiene un clan (clan_id) y un

clan varias mafias…

class Clan < ActiveRecord::Base
has_many :mafia
end

class Mafia < ActiveRecord::Base
belongs_to :clan
end

la linea @[email protected] es la que me da el error siguiente:

Tal y como lo tienes modelado, yo probar�a a usar el plural “mafias”:

class Clan < ActiveRecord::Base
has_many :mafias # <-- plural aqui!
end

class Mafia < ActiveRecord::Base
belongs_to :clan
end

def details
identificador=@params[:id]
if identificador!=nil
@clan=Clan.find(identificador)
@[email protected] # <-- plural aqui!
else
redirect_to :action=>:list
end
end

�Podr�as probar
as�?
Saludos,
Raul