Problema con has_many autorreferencial: a través de asociaciones en los carriles
-
21-08-2019 - |
Pregunta
Yo estaba leyendo acerca de has_many autorreferencial: a través de situaciones de datos hoy en día, porque yo estoy tratando de construir una aplicación Rails que los utiliza. He encontrado esta situación en Internet, y tengo una pregunta al respecto. Me deja publicar este código de ejemplo del blog de este tipo:
create_table :animals do |t|
t.string :species
end
create_table :hunts do |t|
t.integer :predator_id
t.integer :prey_id
t.integer :capture_percent
end
class Animal < ActiveRecord::Base
has_many :pursuits, :foreign_key => 'predator_id',
:class_name => 'Hunt',
:dependent => :destroy
has_many :preys, :through => :pursuits
has_many :escapes, :foreign_key => 'prey_id',
:class_name => 'Hunt',
:dependent => :destroy
has_many :predators, :through => :escapes
end
class Hunt < ActiveRecord::Base
belongs_to :predator, :class_name => "Animal"
belongs_to :prey, :class_name => "Animal"
end
Digamos que estoy construyendo una página web que muestra el primer animal en su base de datos. Debajo de esta partida es una lista de porcentajes (capture_percent). Cada porcentaje se refiere a un animal que de esta página caza de animales, pero no le dice el nombre del animal, al igual que el porcentaje. Al hacer clic en cualquier porcentaje dado a continuación, le llevará a la página del animal correspondiente.
Esta es una pregunta un poco difícil de envolver su cabeza alrededor, lo sé, pero estoy tratando de averiguarlo. ¿Tendría que crear una tabla separada para CapturePercent, tal vez?
Solución
¿Tendría que crear una tabla separada para CapturePercent, tal vez?
No, en absoluto, que no parece ser nada complicado sobre esto:
<ul>
<% @animal.pursuits.each do |pursuit| %>
<li><%= link_to "#{pursuit.capture_percent}%", pursuit.prey %></li>
<% end %>
</ul>