Ruby on rails 将继承与RoR一起使用

Ruby on rails 将继承与RoR一起使用,ruby-on-rails,Ruby On Rails,我正在开发我的第一个Rails应用程序(我的第一个Ruby应用程序),我有一个关于继承的最佳实践问题。我必须能够上传物理媒体,并且我希望在数据库中单独存储物理属性,以便在应用程序外部和内部查询某些属性。为了管理这个,我有一个图像表和一个二进制文件表。当然,前者存储特定于图像的元数据,而后者存储将应用于一系列文件类型的物理文件元数据。一旦我确定了我的方法,我将添加一个swfs表,一个videos表,也许还有其他的 目前,我有一个BinaryObserver类在创建图像回调之前捕获,并上传物理文件-

我正在开发我的第一个Rails应用程序(我的第一个Ruby应用程序),我有一个关于继承的最佳实践问题。我必须能够上传物理媒体,并且我希望在数据库中单独存储物理属性,以便在应用程序外部和内部查询某些属性。为了管理这个,我有一个
图像
表和一个
二进制文件
表。当然,前者存储特定于图像的元数据,而后者存储将应用于一系列文件类型的物理文件元数据。一旦我确定了我的方法,我将添加一个
swfs
表,一个
videos
表,也许还有其他的

目前,我有一个
BinaryObserver
类在创建图像回调之前捕获
,并上传物理文件-二进制文件。这很好,但我想知道其他方法。具体来说,我想知道我是否不能(也不应该)建立一个基本的继承模型,其中
Binary
扩展
ActiveRecord::Base
Image
扩展
Binary

就目前而言,
图像属于二进制
二进制有一个图像
。既然有一个明显的
is-a
关系,我应该使用继承吗?rails在与数据库交互时是否支持这样的功能?这可能是减少支持新文件类型所需工作量的最佳方法

如果您对此有任何想法或建议,我们将不胜感激。我正在试验这种语言和框架,所以我试图在深入研究之前学习最佳实践


谢谢。

从数据库的角度来看,您不需要二进制文件表。如果您将二进制数据保存在数据库中,它只是一个属性,如date,您不会创建dates表

如果说图像扩展了二进制,因为图像“是-是”二进制是不准确的,图像“是由”二进制组成的,就像人是由肉组成的(你不会说人扩展了肉)


无论如何,有一个附件插件:,使用它:)

从数据库的角度来看,您不需要二进制文件表。如果您将二进制数据保存在数据库中,它只是一个属性,如date,您不会创建dates表

如果说图像扩展了二进制,因为图像“是-是”二进制是不准确的,图像“是由”二进制组成的,就像人是由肉组成的(你不会说人扩展了肉)


无论如何,有一个附件插件:,使用它:)

幸运的是,rails内置了一个非常好的单表继承

不幸的是,您正在寻找的是多表和支持是相当暗淡的

查看一些示例,了解人们是如何实现这些功能的:

或者,您可以切换到单表继承(尽管这与您之前的注释不符):

示例:

@binaries = Binary.find(:all)

@images = Image.find(:all)

幸运的是,rails中内置了一个非常好的单表继承

不幸的是,您正在寻找的是多表和支持是相当暗淡的

查看一些示例,了解人们是如何实现这些功能的:

或者,您可以切换到单表继承(尽管这与您之前的注释不符):

示例:

@binaries = Binary.find(:all)

@images = Image.find(:all)

如果您正在编写生产代码而不仅仅是测试内容,那么我强烈建议您使用附件或类似的方法来处理这种情况。

如果您正在编写生产代码而不仅仅是测试内容,然后我强烈推荐
附件\u fu
或类似的方法来处理这种情况。

我们可能不得不同意不同意:-)。首先,我想共享物理文件元数据。图像、SWF、视频等都有文件大小、扩展名等公共属性。我不想在每个表中存储这些属性(图像元数据与SWF数据等不同)。其次,我认为图像是一种特定类型的文件。因此,这是一种关系。也许区别在于你如何看待它。在我的例子中,我需要专门跟踪几种类型,但将其他类型(文本、Word文档和其他)合并到一个更通用的类中。回形针也很适合处理附件。我们可能不得不同意不同意:-)。首先,我想共享物理文件元数据。图像、SWF、视频等都有文件大小、扩展名等公共属性。我不想在每个表中存储这些属性(图像元数据与SWF数据等不同)。其次,我认为图像是一种特定类型的文件。因此,这是一种关系。也许区别在于你如何看待它。在我的例子中,我需要专门跟踪几种类型,但将其他类型(文本、Word文档和其他)合并到一个更通用的类中。回形针也很适合处理附件。啊,多态关联。事实上,这很好,应该是我所需要的。我所能想象到的一切都无法扩展我的形象;一切都只是扩展二进制。如果我理解了我所做的简短的补充阅读,我还必须扭转我当前关系的极性。目前,我的外键在图像表上。我越想,这听起来像是一个完美的方式来满足我的需求,但我不确定它是否比我现在所拥有的要好得多。我将不得不使用它,并确定添加新的子类型有多容易。我的错,iano。我误解了Rails中的单表继承,你是对的。这不符合我的需要。我不想把所有的东西都塞进一个表中,然后用这种方式去规范化我的数据。我想我会坚持我的观察者,但不是因为我最初认为的原因。啊,多态关联。事实上,这很好,应该是我所需要的。我所能想象到的一切都无法扩展我的形象;一切都只是扩展二进制。如果我理解了我所做的简短的补充阅读,我也会有t
@binaries = Binary.find(:all)

@images = Image.find(:all)