【问题标题】:Use "references" for multiple items of same type对相同类型的多个项目使用“参考”
【发布时间】:2008-12-10 02:04:27
【问题描述】:

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

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

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

我真的很喜欢 RoR 的“引用”功能,但是有什么方法可以优雅地实现这种系统吗?请记住,我唯一的 RoR 经验是浏览四个教程,并且我正在尝试通过“现实生活中的应用程序”重新应用我所学到的知识。

【问题讨论】:

  • 我认为这是第 666 个带有“rails”标签的问题 D:

标签: ruby-on-rails


【解决方案1】:

与其有四个单独的列,一个单独的连接表可能更合适。例如:

页面 -> 链接页面 -> 页面

然后您可以创建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

【讨论】:

  • 谢谢!我还在习惯这种 RoR 的心态,这似乎是一个非常好的和合乎逻辑的解决方案。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2020-10-22
    • 1970-01-01
    • 2023-03-15
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 2017-07-25
    相关资源
    最近更新 更多