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?

Était-ce utile?

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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top