对同一类型的多个项目使用“引用”

时间:2008-12-10 02:04:27

标签: ruby-on-rails

所以我正在教自己Ruby on Rails,有PHP背景。我写了一个草率的,概念验证的PHP应用程序,名为“2NDP.”我想在Ruby on Rails中重新创建它(但更基本,更干净,并且具有更好的界面),所以我可以学习一些基础知识。

2NDP是一个网站,您可以基本上编写自己的“自己选择冒险”书籍,但与其他人协作。我使用PHP / MySQL工作的方式是,我有一个故事表和一个页面表。页面将属于故事(显然),但每个页面最多可引用四个其他页面,具有四个单独的列,每个列可以引用一个可能的页面ID。

所以现在在我的RoR应用程序中,我有“故事”,其中包含与它们相关联的“页面”。我需要一种方法让页面相互引用,但每页可能有多个引用(一页最多可引用其他四页)。

我非常喜欢RoR拥有的“引用”东西,但有没有办法优雅地实现这种系统?请记住,我唯一的RoR经验是通过四个教程,我试图通过“真实应用程序”重新应用我学到的东西。

2 个答案:

答案 0 :(得分:2)

而不是有四个单独的列,单独的连接表可能更合适。例如:

页面 - > LinkedPages - >页

然后您可以创建has_many through关系。

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

答案 1 :(得分:0)

Hates_,这很有帮助,但是如果有人需要对这类事情进行更深入的解释,read about it here