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?

¿Fue útil?

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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top