【问题标题】:Rails - one model that many others can use?Rails - 许多其他人可以使用的一种模型?
【发布时间】:2012-11-26 02:04:22
【问题描述】:

使用 SQLite 运行 Rails 3.2.8(来自 ruby​​onrails.org 上当前 dl 的基本设置)

如果我有几个模型我想要一个“notes”属性并且所有“notes”都是字符串,是否应该只有一个特定的 Note 模型,所有其他模型都引用 Note 模型?

或

每个模型都必须有自己的“笔记”属性吗?

如果是第一个响应,这是否意味着对于每个引用“注释”的关系,我是否需要创建另一个定义 :through 关系的类? (即 tableOne、tableTwo 和 tableThree 都是参考笔记,那么我需要创建额外的类 tableOne_notes、tableTwo_notes 和 tableThree_notes)

多态解决方案是否适用?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 sqlite ruby-on-rails-3.1 models


    【解决方案1】:

    如果您想要一个可以为许多其他模型提供相同目的的“注释”模型,这将是一种多态关系。 无论应用程序框架如何,这实际上都是正确的。

    在这个例子中,在 Rails 实现多态关系的特定情况下,你可以添加一个

    note_type 
    

    notes 模型/表和 Note 模型中的列,使用数据库迁移加:

    belongs_to :notable, :polymorphic => true  
    

    在Note 然后

    has_many notes, :as => notable` 
    

    在其他需要备注的机型中。

    请参阅http://guides.rubyonrails.org/association_basics.html#polymorphic-associations 了解更多信息。

    多态关系的常见用途:

    • 笔记(如您所用)
    • 更新信息(时间戳、IP 地址、用户代理等)
    • 简单的键值查找类别

    【讨论】:

      【解决方案2】:

      这取决于您的需求。但基本上可以创建一个模型Notice 并在Notice 和Other 和Other2 之间创建1-n 关系...

      据我了解,您的问题只有 1-n 或多个 1-n 关系才有意义。如果您在每个表中添加一列notes,则每个数据行只能是一个注释。 1-n 关系不需要另一个定义 :through 的类。

      【讨论】:

        猜你喜欢
        • 2013-12-16
        • 2021-04-19
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2018-10-21
        • 1970-01-01
        相关资源
        最近更新 更多