Используйте «ссылки» для нескольких элементов одного типа - PullRequest
2 голосов
/ 10 декабря 2008

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 10 декабря 2008

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

Страницы -> 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

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

my_page.pages
0 голосов
/ 12 декабря 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...