Я читал о самореферентном has_many: в современных ситуациях с данными, потому что я пытаюсь создать приложение 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
Допустим, я создаю веб-страницу, которая перечисляет первое животное в его базе данных. Под этим заголовком находится список процентов (capture_percent). Каждый процент относится к животному, на которое охотится животное этой страницы, но оно не сообщает вам имя животного, а только процент. Нажав на любой процент, вы попадете на страницу соответствующего животного.
Это довольно сложный вопрос, чтобы обернуть голову, я знаю, но я пытаюсь понять это. Возможно, мне придется создать отдельную таблицу для CapturePercent?