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 :
- Comprensión del complemento de canalización de activos
- Los conceptos básicos de la creación y el uso de módulos en Rails
- Una forma sencilla de aumentar el rendimiento de su aplicación Rails
- Ampliación de aplicaciones con conexión de múltiples bases de datos