因此,我正在自学 Ruby on Rails,并具有 PHP 背景。我编写了一个草率的、概念验证的 PHP 应用程序,名为“2NDP. http://rezich.com/storybored“我想在 Ruby on Rails 中重新创建它(但更基础、更干净并且具有更好的界面),这样我就可以学习一些基础知识。
2NDP 是一个网站,您基本上可以在其中编写自己的“选择您自己的冒险”书籍,但可以与其他人协作。我使用 PHP/MySQL 进行这项工作的方式是,我有一个故事表和一个页面表。这些页面将属于故事(显然),但每个页面将通过四个单独的列来引用最多四个其他页面,每个列对应可以引用的每个可能的页面 ID。
因此,现在在我的 RoR 应用程序中,我的“故事”具有与其关联的“页面”。我需要一种方法让页面相互引用,但每个页面可能有多个引用(一个页面最多可以引用四个其他页面)。
我真的很喜欢 RoR 的“引用”功能,但是有没有办法优雅地实现这种系统呢?请记住,我唯一的 RoR 经验是浏览四个教程,并且我正在尝试通过“现实生活应用程序”重新应用我所学到的知识。
与拥有四个单独的列相比,单独的连接表可能更合适。例如:
页面 -> 链接页面 -> 页面
然后你可以创建一个有_许多通过 http://wiki.rubyonrails.org/rails/pages/Beginner+Howto+on+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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)