Expressing a Complex DDL in Rails

Hi all,

i am migrating an aplication to Rails and it has some weird construct
to handle References and DropDown Values, i was wondering how could i
express this in Rails? i put it on Parked at Loopia but in
case it expires here is the DDL

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N’[dbo].[ReferenciasTipos_T]‘) AND type in (N’U’))
BEGIN
CREATE TABLE [dbo].[ReferenciasTipos_T](
[TipID] [int] IDENTITY(1,1) NOT NULL,
[TipNombre] nvarchar NOT NULL,
[TipDescripcion] nvarchar NULL,
[TipIsNotas] char NOT NULL CONSTRAINT
[DF_ReferenciasTipos_T_TipIsNotas] DEFAULT (‘N’),
[TipTituloNotas] nvarchar NULL,
[TipTituloNotaUnaLinea] nvarchar NULL,
[TipIsNotaUnaLinea] char NOT NULL CONSTRAINT
[DF_ReferenciasTipos_T_TipIsNotaUnaLinea] DEFAULT (‘N’),
[TipPadreID] [int] NULL,
[TipSystemUser] char NULL,
[Creacion] [datetime] NOT NULL CONSTRAINT
[DF_ReferenciasTipos_T_Creado] DEFAULT (getdate()),
[Modificacion] [datetime] NOT NULL CONSTRAINT
[DF_ReferenciasTipos_T_Modificado] DEFAULT (getdate()),
[Creacion_UsrID] [int] NULL,
[DeletedDate] [datetime] NULL,
CONSTRAINT [PK_ReferenciasTipos_T] PRIMARY KEY CLUSTERED
(
[TipID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N’[dbo].[ReferenciasValores_T]‘) AND type in (N’U’))
BEGIN
CREATE TABLE [dbo].[ReferenciasValores_T](
[ValorID] [int] IDENTITY(1,1) NOT NULL,
[TipID] [int] NOT NULL,
[ParentID] [int] NULL,
[Descripcion] nvarchar NOT NULL,
[Orden] [int] NULL CONSTRAINT [DF_ReferenciasValores_T_Orden]
DEFAULT ((0)),
[Notas] [text] NULL,
[NotaUnaLinea] nvarchar NULL,
[Creacion] [datetime] NOT NULL CONSTRAINT
[DF_ReverenciasValores_Creado] DEFAULT (getdate()),
[Modificacion] [datetime] NOT NULL CONSTRAINT
[DF_ReverenciasValores_Modificado] DEFAULT (getdate()),
[Creacion_UsrID] [int] NULL,
[Comp_ID] [int] NULL,
[DeletedDate] [datetime] NULL,
CONSTRAINT [PK_ReverenciasValores] PRIMARY KEY CLUSTERED
(
[ValorID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =
OBJECT_ID(N’[dbo].[FK_ReferenciasTipos_T_ReferenciasTipos_T]‘) AND
parent_object_id = OBJECT_ID(N’[dbo].[ReferenciasTipos_T]‘))
ALTER TABLE [dbo].[ReferenciasTipos_T] WITH CHECK ADD CONSTRAINT
[FK_ReferenciasTipos_T_ReferenciasTipos_T] FOREIGN KEY([TipPadreID])
REFERENCES [dbo].[ReferenciasTipos_T] ([TipID])
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =
OBJECT_ID(N’[dbo].[FK_ReferenciasValores_T_Usuarios_T]‘) AND
parent_object_id = OBJECT_ID(N’[dbo].[ReferenciasValores_T]‘))
ALTER TABLE [dbo].[ReferenciasValores_T] WITH CHECK ADD CONSTRAINT
[FK_ReferenciasValores_T_Usuarios_T] FOREIGN KEY([Creacion_UsrID])
REFERENCES [dbo].[Usuarios_T] ([UsrID])
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =
OBJECT_ID(N’[dbo].[FK_ReverenciasValores_ReferenciasTipos_T]‘) AND
parent_object_id = OBJECT_ID(N’[dbo].[ReferenciasValores_T]‘))
ALTER TABLE [dbo].[ReferenciasValores_T] WITH CHECK ADD CONSTRAINT
[FK_ReverenciasValores_ReferenciasTipos_T] FOREIGN KEY([TipID])
REFERENCES [dbo].[ReferenciasTipos_T] ([TipID])
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =
OBJECT_ID(N’[dbo].[FK_ReverenciasValores_ReverenciasValores]‘) AND
parent_object_id = OBJECT_ID(N’[dbo].[ReferenciasValores_T]'))
ALTER TABLE [dbo].[ReferenciasValores_T] WITH CHECK ADD CONSTRAINT
[FK_ReverenciasValores_ReverenciasValores] FOREIGN KEY([ParentID])
REFERENCES [dbo].[ReferenciasValores_T] ([ValorID])