Используйте «ссылку» для нескольких элементов одного типа

голоса
2

Так что я учу себя Рубин на Rails с PHP фоне. Я написал неаккуратно, проверка концепции PHP приложение под названием « 2NDP. » Я хочу , чтобы воссоздать это в Ruby On Rails (но более простой, более чистый, и с лучшим интерфейсом), так что я могу узнать некоторые основ.

2NDP это сайт, где вы можете в основном написать свою собственную «Choose-Your-Own-приключение» книгу, но совместно с другими людьми. То, как я сделал эту работу с PHP / MySQL, я имел таблицу историй и таблицы страниц. Страницы будут принадлежать к историям (очевидно), но каждая страница будет иметь ссылки на до четырех страниц, имеющих четыре отдельных столбцов, по одному для каждого возможной страницы идентификатора, который может быть ссылкой.

Так что сейчас в моем RoR приложении, у меня есть «истории», которые имеют «страницы», которые связаны с ними. Мне нужен способ, чтобы получить страницы, чтобы ссылаться друг на друга, но возможность более одной ссылки на страницы (одна страница может ссылаться до четырех страниц).

Мне очень нравится «ссылка» вещь, что RoR есть, но есть ли способ, чтобы корректно реализовать такую ​​систему? Имейте в виде, что мой единственный опыт RoR ходит через четыре учебников, и я пытаюсь повторно применить то, что я узнал, с «реальной жизнью приложением.»

Задан 10/12/2008 в 03:04
источник пользователем
На других языках...                            


2 ответов

голоса
2

Вместо того, имея четыре раздельных колонн, отдельное присоединение таблица может быть более подходящей. Например:

Страницы -> LinkedPages -> Страница

Тогда вы можете создать has_many через отношения.

class Pages < ActiveRecord::Base
  has_many :linked_pages
  has_many :pages, :through => :linked_pages
end

class LinkedPages < ActiveRecord::Base
  belongs_to :pages, :class_name => "Pages", :foreign_key => "page_id"
  belongs_to :linked_pages, :class_name => "Pages", :foreign_key => "linked_id" 
end

Тогда при использовании объекта страницы вы можете просто сказать:

my_page.pages
Ответил 10/12/2008 в 09:42
источник пользователем

голоса
0

Hates_, что было полезно, но если кому -то нужен более глубокое объяснение о такого рода вещи, об этом читайте здесь .

Ответил 12/12/2008 в 03:30
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more