Pergunta

Eu estava lendo sobre has_many auto-referencial: através de situações de dados hoje, porque eu estou tentando construir uma aplicação Rails que usa-los. Eu encontrei este situação exemplo na Internet, e eu tenho uma pergunta sobre isso. Deixe-me colocar este código exemplo do blog desse cara:

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

Vamos dizer que eu estou construindo uma página web que lista o primeiro animal no seu banco de dados. Debaixo desta rubrica é uma lista de percentagens (capture_percent). Cada percentual é referente a um animal que caça de animais desta página, mas não dizer-lhe o nome do animal, apenas a porcentagem. Clicando em qualquer determinada percentagem, em seguida, levá-lo para a página do animal correspondente.

Esta é uma espécie de uma pergunta difícil de quebrar a cabeça por aí, eu sei, mas eu estou tentando descobrir isso. Eu teria que criar uma tabela separada para CapturePercent, talvez?

Foi útil?

Solução

Será que eu tenho que criar uma tabela separada para CapturePercent, talvez?

Não, não parece ser nada complicado sobre isso:

<ul>
<% @animal.pursuits.each do |pursuit| %>
  <li><%= link_to "#{pursuit.capture_percent}%", pursuit.prey %></li>
<% end %>
</ul>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top