sábado, 8 de noviembre de 2008

BBDD en Ruby

Relación 1 a muchos

Pongamos que tenemos una persona que tiene muchos teléfonos

# una migración para crear una persona con su nombre

class CreatePeople < ActiveRecord::Migration
def self.up
create_table :people do |t|
t.column :name, :string
end
end

def self.down
drop_table :people
end
end

#una migración para indicar que existe la tabla teléfono y que una persona tiene muchos teléfonos.


class CreatePhones < ActiveRecord::Migration
def self.up
create_table :phones do |t|
t.column :number, :string
t.column :perdon_id, :integer
end
end

def self.down
drop_table :phones
end
end


#### ahora en los modelos
class Person < ActiveRecord::Base

has_many :phones # una persona tiene muchos teléfonos :phones
# has_many :telefonos, :class_name => "Phone"
# has_one :phone #una persona tiene un teléfono ...el nombre de :phone es el nombre del modelo
end

class Phone < ActiveRecord::Base
belongs_to :person #un teléfono pertenece a una persona.
end


Nota
.-Donde tienes un has_one o un has_many, del otro lado hay un belongs_to
.-Si la relación es de muchos a muchos, ponemos en los dos modelos el has_and_belongs_to_many (en plural)
.-Cuando es de muchos a muchos, tienes que crear una tabla en bbdd cuya convención sea tabla1_tabla2, donde están ordenadas alfabéticamente. Ejemplo: people_phones y luego es person_id, phone_id
.-Cuando hablamos de relaciones en ruby on rails, se tratan en arrays

No hay comentarios: