[Ror-es] belongs_to falla

Fernando Calatayud ruby-forum-incoming at andreas-s.net
Mon Dec 17 09:14:39 GMT 2007


Xavier Noria wrote:
> On Dec 17, 2007, at 12:54 AM, Fernando Calatayud 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.
-- 
Posted via http://www.ruby-forum.com/.


More information about the Ror-es mailing list