Problème avec has_many auto-référentiel: par des associations dans Rails
-
21-08-2019 - |
Question
Je suis en train de lire à propos has_many autoréférentielle: à travers des situations de données aujourd'hui, parce que je suis en train de construire une application Rails qui les utilise. J'ai trouvé cette sur Internet, et j'ai une question à ce sujet. Permettez-moi de poster ce code exemple du blog de ce type:
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
Disons que je vais construire une page Web qui répertorie le premier animal dans sa base de données. Sous cette rubrique une liste des pourcentages (capture_percent). Chaque pourcentage fait référence à un animal de chasse aux animaux de cette page, mais il ne vous dit pas le nom de l'animal, juste le pourcentage. En cliquant sur un pourcentage donné alors vous amène à la page de l'animal correspondant.
Ce genre est une question difficile à envelopper autour de votre tête, je sais, mais je suis en train de le comprendre. Est-ce que je dois créer une table séparée pour CapturePercent, peut-être?
La solution
Est-ce que je dois créer une table séparée pour CapturePercent, peut-être?
Pas du tout, il ne semble pas être quelque chose de compliqué à ceci:
<ul>
<% @animal.pursuits.each do |pursuit| %>
<li><%= link_to "#{pursuit.capture_percent}%", pursuit.prey %></li>
<% end %>
</ul>