Я пытаюсь установить самоссылочную ассоциацию в Rails 5. У меня есть модель видео. Видео может иметь предыдущее видео (как в сериале). В идеале это будет выглядеть так:
irb(main):001:0> first_video = Video.create(url: 'https://youtu.be/W0lhlPdo0mw')
irb(main):002:0> second_video = Video.create(url: 'https://youtu.be/gQhlw6F603o', previous_video: first_video)
irb(main):003:0> second_video.previous_video
=> #<Video id: 1, url: "https://youtu.be/W0lhlPdo0mw">
Это мой текущий подход, но он не работает с (PG::UndefinedColumn: ERROR: column videos.video_id does not exist)
, поэтому я должен передать идентификатор.
Модель
class Video < ApplicationRecord
has_one :previous_video, class_name: 'Video'
end
Миграция
class CreateVideo < ActiveRecord::Migration[5.2]
def change
create_table :videos do |t|
t.string :url, null: false
t.references :previous_video, class: 'Video'
t.timestamps
end
end
end
Какая лучшая практика для достижения этого в Rails 5? И почему вышеупомянутое не работает как ожидалось?
Команда Cheers!