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](200) NOT NULL,         [TipDescripcion] [nvarchar](500) NULL,         [TipIsNotas] [char](1) NOT NULL CONSTRAINT [DF_ReferenciasTipos_T_TipIsNotas] DEFAULT ('N'),         [TipTituloNotas] [nvarchar](50) NULL,         [TipTituloNotaUnaLinea] [nvarchar](100) NULL,         [TipIsNotaUnaLinea] [char](1) NOT NULL CONSTRAINT [DF_ReferenciasTipos_T_TipIsNotaUnaLinea] DEFAULT ('N'),         [TipPadreID] [int] NULL,         [TipSystemUser] [char](1) 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](200) NOT NULL,         [Orden] [int] NULL CONSTRAINT [DF_ReferenciasValores_T_Orden] DEFAULT ((0)),         [Notas] [text] NULL,         [NotaUnaLinea] [nvarchar](50) 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])