2008-12-13 13 views
9

Estaba leyendo acerca de self-referential has_many: a través de situaciones de datos de hoy, porque estoy tratando de construir una aplicación Rails que los use. Encontré este example situation en Internet, y tengo una pregunta al respecto. Me deja publicar este código de ejemplo del blog de este tipo:Problema con self-referential has_many: a través de asociaciones en Rails

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 este encabezado hay una lista de porcentajes (capture_percent). Cada porcentaje se refiere a un animal que los animales de esta página buscan, pero no le dice el nombre del animal, solo el porcentaje. Al hacer clic en cualquier porcentaje, te llevará a la página del animal correspondiente.

Esta es una pregunta difícil de entender, lo sé, pero estoy tratando de resolverlo. ¿Tendría que crear una tabla separada para CapturePercent, tal vez?

Respuesta

8

¿Tendré 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> 
Cuestiones relacionadas