Asociaciones polimórficas con registro activo

Ruby on Rails, un marco de aplicación web excepcionalmente productivo, está optimizado para el deleite del programador y una producción sostenible. Favorece la convención sobre la configuración y, por lo tanto, le permite escribir código atractivo sin preocuparse demasiado por la conformación.

Hay una demanda creciente de Ruby on Rails debido a su velocidad y agilidad en la creación de aplicaciones con productividad mejorada y tiempo de entrega reducido.

Las asociaciones de registros activos son una de las características más importantes de Rails. La asociación polimórfica es parte de estas asociaciones. Con la asociación polimórfica, un modelo puede pertenecer a más de un modelo, en una sola asociación.

Why do we need associations between models? Because they make common operations simpler and easier in your code. With Active Record associations, we can streamline these – and other – operations by declaratively telling Rails that there is a connection between the two models.

En Rails, un asociación es una conexión entre dos modelos Active Record. Las asociaciones se implementan mediante llamadas de estilo macro, de modo que pueda agregar funciones a sus modelos de forma declarativa. Por ejemplo, al declarar que un modelo pertenece a otro, le indica a Rails que mantenga la información de clave primaria y clave externa entre instancias de los dos modelos, y también obtiene una serie de métodos de utilidad agregados a su modelo. Rails admite seis tipos de asociaciones:

Veamos cómo implementarlo. Primero necesitaremos crear un modelo de documento.

modelo Rails g Nombre del documento: cadena wpl_article_id: entero

wpl_article_type:cadena

clase Documento < ActiveRecord::Base

pertenece_a :wpl_article, :polymorphic => verdadero

fin

La interfaz:

Usando una asociación polimórfica, necesitamos definir solo un pertenece_a y agregar un par de columnas relacionadas a la tabla de la base de datos subyacente. A partir de ese momento, cualquier clase de nuestro sistema puede tener documentos adjuntos (lo que la convertiría en wpl_article) sin necesidad de alterar el esquema de la base de datos ni el propio modelo de documento.

There isn’t a wpl_article class (or module) in our application. We named the association :wpl_article because it accurately describes the interface of objects that will be associated in this way. The name

:wpl_article aparecerá nuevamente en el otro lado de la asociación:

clase Software < ActiveRecord::Base

has_one :documento, :as => :wpl_article

fin

clase Hardware < ActiveRecord::Base

has_one :documento, :as => :wpl_article

fin

clase Investigación < ActiveRecord::Base

has_one :documento, :as => :wpl_article

fin

The Database Columns: (association_name)_type – Stores the type for

asociaciones polimorfas.

clase CreateDocuments < ActiveRecord::Migración

definitivamente cambio

create_table :los documentos no |t|

t.cadena: nombre

t.integer :wpl_article_id # as we have mentioned “belongs_to

:wpl_article, :polymorphic => true” in document model . This is a

convención de esquema que asociacion_nombre_tipo y

association_name_id will be accordingly “wpl_article”.

t.cadena: wpl_article_type

fin

fin

fin

Software, Hardware e Investigación tienen un documento a través de una asociación polimórfica wpl_article Aquí podemos ver cómo se modela. El documento está asociado con tres modelos de software, hardware e investigación en una sola asociación a través de wpl_article, lo que ayuda a lograr la asociación.

Cargando entorno de desarrollo (Rails 4.1.1)

2.0.0-p247 :001 > document = Document.create(name: ‘Worldcup)

=> # <Document id: 1, wpl_article_type: nil, wpl_article_id: nil, name:

“Worldcup”>

2.0.0-p247 :002 > software = Software.create(name: ‘cricinfo.com’)

=> #<Software id: 1, name: “cricinfo.com”>

2.0.0-p247: 003 > document.update_attribute(:wpl_article, software)

=> #<Document id: 1, wpl_article_type: ‘Software’, wpl_article_id: 1,

name: “Worldcup”>

=> verdadero

2.0.0-p247 :004 > Software.apellido.nombre.del.documento

=> “Worldcup”

2.0.0-p247 :005 >Documento.último

=> # <Document id: 1, wpl_article_type: nil, wpl_article_id: nil, name:

“Worldcup”>

2.0.0-p247 :006 >Documento.último.wpl_artículo

recuperará la recuperación según wpl_article_id y wpl_article_type

Railscarma proporciona soluciones Ruby on Rails de extremo a extremo desde el desarrollo, implementación, administración, monitoreo y soporte de sus aplicaciones.

Al trabajar en la aplicación Ruby desde sus etapas iniciales, RailsCarma le brinda la ventaja de su experiencia pionera para ayudarlo a obtener soluciones comerciales rápidas y simplificadas.

Leer más : 

Póngase en contacto con nosotros.

Suscríbete para recibir las últimas actualizaciones

Artículos Relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Spanish
English
English
Japanese
German
French
Spanish

envíanos whatsapp

Salir de la versión móvil