Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:如何处理模型子类化?_Ruby On Rails_Ruby On Rails 3_Activerecord_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails Rails:如何处理模型子类化?

Ruby on rails Rails:如何处理模型子类化?,ruby-on-rails,ruby-on-rails-3,activerecord,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Activerecord,Ruby On Rails 3.1,除了组织Rails中下面描述的文档和部分模型的最佳实践方法是什么之外,还有十种方法 文档可以有n个节。每个节都可以是一种特殊类型的节,具有与其他节不同的属性和关联。每个文档都需要跟踪与其关联的所有节的节顺序状态,而不管其类型如何 我可以为每个节类型创建模型类,并将它们关联到文档上,就像许多节类型a一样,还有许多节类型a并编写排序机制,将给定文档的所有类型的排序集合放在一起 我研究了单表继承。但是,当专用属性比几个字符串或整数字段更复杂时,STI方法似乎有问题。节将具有映射到数据库文本列的属性,并

除了组织Rails中下面描述的
文档
部分
模型的最佳实践方法是什么之外,还有十种方法

文档可以有n个节。每个
都可以是一种特殊类型的节,具有与其他节不同的属性和关联。每个
文档
都需要跟踪与其关联的所有节的节顺序状态,而不管其类型如何

我可以为每个
类型创建模型类,并将它们关联到
文档
上,就像许多
节类型a
一样,还有许多
节类型a
并编写排序机制,将给定文档的所有类型的排序集合放在一起

我研究了单表继承。但是,当专用属性比几个字符串或整数字段更复杂时,STI方法似乎有问题。节将具有映射到数据库文本列的属性,并且它们自己的节具有多个、多个关联

以下是所述要素的大致轮廓:

Document
  Sections
  -Section Type A
    Title, freeform text
  -Section Type B
    Title, collection of urls
  -Section Type C
    Title, collection of images with title and collection of image comments

看一看。也许您可以为不同的
类型创建一个“可分段”类型,并将它们放在
文档中的一个多态关联中
这似乎可以通过反向多态关联解决,如:

#模型
类文档:文档部分,
:source=>:节,
:source_type=>'FreeformSection'
def添加_部分(部分)
self.freeform_节为true
结束
类FreeformSection:节
有一个:文档,:到=>:文档
结束
#迁移
类CreateDocuments“我的文档”

document.freeform_部分我对多态关联的理解是,它们对于将一个模型链接到多个其他模型非常有用。在本例中,我有多种不同属性和关联的节,它们属于同一个文档。您看过STI吗?如果不同的节类型共享很多代码,并且只有数据不同,那么您可以尝试一下STI。但是,如果公共分母只是
Title
属性,那么您可能只需要为每种类型创建单独的关联