【问题标题】:Ruby on Rails: Is there any way to use nested attributes for a wiki system?Ruby on Rails:有没有办法为 wiki 系统使用嵌套属性?
【发布时间】:2010-06-22 20:36:02
【问题描述】:

我正在为一个应用程序构建一个 wiki 系统。设计的本质是有一个Article模型,每个Article都有_many Revisions。当需要显示文章时,会拉出最近的修订以获取所有相关信息。

这似乎是使用accepts_nested_attributes_for 的完美案例,以便编辑文章将代表修订接受更改。但是,我似乎无法找到保留所有旧版本的方法,并通过在每次编辑时创建新版本来进行更改。有什么办法可以做到吗?

对于那些喜欢不那么抽象的东西的人:

class Article
  has_many :revisions
  has_one :current_revision, :class_name => "Revision", :order => "created_at DESC"
  #contains columns that are not tracked for revisions, such as the article's Url slug
end
class Revision
  belongs_to :article
  #contains basic columns like wiki article body
end

【问题讨论】:

    标签: ruby-on-rails wiki nested-attributes


    【解决方案1】:

    您不需要所有这些工作,看看Vestal Versions gem。它带来了版本化模型所需的一切。还有一个railscast

    但如果您仍想使用嵌套表单,则有两个不错的 railscast:

    1. Nested Model Form Part 1
    2. Nested Model Form Part 2

    【讨论】:

    • 对于 Vestal 版本,如果我最终更改了版本化模型的列,这是否意味着所有现有版本都将无法使用?
    • 对不起,我不明白你的问题,但我希望我的回答仍然对你有帮助。 Vestal Versions 保留您模型的版本,每次您更新模型时,Vestal Versions 都会保存旧版本,因此您可以随时访问它。所以他们不会变得无法使用
    • 我只是有点担心版本的脆弱性。如果我要从表中为基础添加或删除一列,我想知道保存的版本会发生什么。
    • 好的,现在我了解您的顾虑了,抱歉,在这里我无法为您提供帮助。我从来没有像这样更改过版本化模型。
    猜你喜欢
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 2012-10-18
    • 2016-02-25
    相关资源
    最近更新 更多