Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apoyo Lectura - Relaciones N A N
Apoyo Lectura - Relaciones N A N
Definiciones Iniciales
Configuraciones
Crea un modelo Post con atributos: Genera los archivos necesarios, con código
base, entre ellos:
El método más común es usar relaciones del tipo HABTM (has and belongs
to many)
Tabla Join
$ rails g migration CreateJoinTablePostTag post tag
Podemos usar “rails console” que abre el modo interactivo, donde podemos
probar nuestro desarrollo usando código ruby
Asociación de recursos
Desde la consola de rails, podemos probar la asignación de recursos
post = Post.create(...)
tag = Tag.create(...)
Para transformar una relación directa a una indirecta, se agregan los ID de los modelos en cuestión
post = Post.last
post.tags
post.tags.destroy_all
Asignar un recurso directamente
Podemos guardar una relación entre post y tag creando un registro del
modelo PostTag
PostTag.create(post_id, tag_id)
Crear una relación transitiva directamente
En versiones anteriores a Rails 5, en las relaciones del tipo has_many :through era posible eliminar
en cascada los elementos asociados, usando “dependent: :destroy”
Rails.application.routes.draw do
resources :tags
resources :posts
resources :post_tags
end
Rutas de modelos intermedios
<div class="field">
<%= form.label :tags %>
<%= form.collection_check_boxes(:tag_ids,
Tag.all,
:id,
:title) do |b| %>
<%= b.label class:"label-checkbox" do%>
<%=b.check_box + b.text%>
<%end%>
<% end %>
</div>
Recursos anidados
posts = Post.order(:published_at).limit(10)
posts.each do |post|
puts "#{post.author.name} wrote #{post.title}"
end
N + 1 queries
Problema solucionado:
posts = Post.order(:published_at).includes(:author).limit(10)
posts.each do |post|
puts "#{post.author.name} wrote #{post.title}"
end
Includes vs Joins
Autenticación: Autorización:
...
end
Gemas de utilidad
Iniciamos con:
Iniciamos con: