fernan2
December 17, 2007, 12:54am
1
He definido la relación entre usuario y provincia, de forma estándar:
Usuario.rb -> belongs_to :provincia, :foreign_key => ‘provincia_id’
Provincia.rb -> has_many :usuarios
Pero luego, funciona como si no se hubiera creado el belongs_to:
@usuario = Usuario.find(session[:usuario_id])
raise @usuario.provincia.inspect
-> nil
raise @usuario.provincia_id.inspect
-> 15
(por supuesto, existe la provincia con id = 15)
¿Alguna idea de por qué se produce esta anomalÃa?
fernan2
December 17, 2007, 1:08am
2
On Dec 17, 2007, at 12:54 AM, Fernando C. wrote:
He definido la relación entre usuario y provincia, de forma estándar:
Usuario.rb -> belongs_to :provincia, :foreign_key => ‘provincia_id’
Aqui la :foreign_key es redundante, se calcula a partir del nombre de
la relacion. Si la relacion se llama :provincia la llave por defecto
se asume que es “provincia_id”, y la clase asociada Provincia.
Pero luego, funciona como si no se hubiera creado el belongs_to:
@usuario = Usuario.find(session[:usuario_id])
raise @usuario.provincia.inspect
-> nil
raise @usuario.provincia_id.inspect
-> 15
Puedes copiar lo relevante en db/schema.rb y en los dos modelos sin
editarlos?
– fxn
fernan2
December 17, 2007, 10:14am
3
Xavier N. wrote:
On Dec 17, 2007, at 12:54 AM, Fernando C. wrote:
He definido la relaci�n entre usuario y provincia, de forma est�ndar:
Usuario.rb -> belongs_to :provincia, :foreign_key => ‘provincia_id’
Aqui la :foreign_key es redundante, se calcula a partir del nombre de
la relacion. Si la relacion se llama :provincia la llave por defecto
se asume que es “provincia_id”, y la clase asociada Provincia.
SÃ, inicialmente lo hice asÃ, pero como no iba decidà explicitarlo a ver
si daba mejor resultado… aunque obviamente, no ha servido de nada.
Pero luego, funciona como si no se hubiera creado el belongs_to:
@usuario = Usuario.find(session[:usuario_id])
raise @usuario.provincia.inspect
-> nil
raise @usuario.provincia_id.inspect
-> 15
Puedes copiar lo relevante en db/schema.rb y en los dos modelos sin
editarlos?
– fxn
Ya ha salido el fallo, estaba en Provincia.rb, en una función que añadió
un compañero para ordenar por defecto:
class Provincia < ActiveRecord::Base
has_many :productos
has_many :usuarios
has_many :socios
belongs_to :pais
belongs_to :comunidad
validates_presence_of :pais_id, :comunidad_id, :nombre, :nombre_corto,
:position
setea por default que el orden sea por nombre si le asigna ninguno.
def self.find(*args)
order_arg = args.collect do |arg|
if arg.kind_of? Hash
if arg.keys[0] == :order
arg
end
end
end
if order_arg.compact.empty?
args << {:order => "nombre ASC"}
end
super
end
end
Quitando esta función, ya funciona… ahora se lo comentaré a mi
compañero, para ver si la quitamos definitivamente o se la curra para
que no estropee el funcionamiento normal.
Muchas gracias.