Relaciones entre modelos

Tengo la tabla personas, donde manejo un campo persona_id, que
conseptualmente es el representante de una persona ( que es también una
persona). Cuando defino lo siguiente

1 class Persona < ActiveRecord::Base
2 has_many :empresas
3 has_one :persona, :class_name => “Persona”
4 belongs_to :persona, :class_name => “Persona”, :foreign_key =>
‘persona_id’
5
6 def nombrecompleto()
7 nombres() + " " + ap_paterno() + " " + ap_materno()
8 end
9end

En las lineas 3 y 4 que función tiene el primer parámetro “:persona”, es
el
nombre del modelo o solo es un nombre para conectar el has_one y el
belongs_to?, y lo mismo en la linea 2 con el parámetro “:empresa” ?

gracias

On 3/6/07, Angel Mauricio Pino Gonzalez
[email protected] wrote:

En las lineas 3 y 4 que función tiene el primer parámetro “:persona”, es el
nombre del modelo o solo es un nombre para conectar el has_one y el
belongs_to?, y lo mismo en la linea 2 con el parámetro “:empresa” ?

Es el nombre de la
relación.
Podrías tener:

class Post
belongs_to :creator, :class_name => ‘User’
end

post.creator
→ <User…>

post.creator.class
→ User

Ojo, creo que a partir de Rails 2.0, el nombre de la foreign key (la
columna en la BD) se va a inferir a partir del nombre de la relación y
no del modelo. Es decir que en el ejemplo anterior, la FK debería ser
creator_id, mientras que hoy en día se va a buscar user_id.