在Ruby on Rails应用程序中将文件添加到数据库中?

时间:2009-12-31 00:27:08

标签: ruby-on-rails aptana

我刚刚开始在rails上学习ruby,我想创建一个允许我将文件添加到数据库的应用程序。目前,我正在使用Eclipse的Aptana插件开发rails应用程序,应用程序正在使用默认的sqllite数据库。

我尝试使用以下参数生成脚手架:documents title:string file:varbinary。然后我做'耙' - >'db' - >'迁移'。当我迁移到localhost / documents并单击“New Document”时,应用程序将失败并显示错误。

我想要点击“新文档”,有一个字段可以让我在本地计算机上浏览文档,选择文档并将其添加到rails应用程序的数据库中。

4 个答案:

答案 0 :(得分:4)

如今,

Paperclip比attachment_fu更受推荐。它非常简单易用,适用于您的活动记录模型。

答案 1 :(得分:1)

它是您要添加的特定类型的文件吗?

我只是问,因为如果它不是一种受益于数据库的数据(文本数据可能是可搜索的,二进制数据不是),那么你可以更好地将它存储在文件系统中并直接提供 - 特别是对于像图像或视频这样的东西 - 而不是将其插入数据库,并且每次用户请求时都必须通过您的应用程序。

我不是说没有任何理由你可能想要在数据库中有一个文件,但我认为这是最后的手段,在十年的网络编程中,我没有遇到过这样的情况:这是必要的。

答案 2 :(得分:1)

我强烈推荐attachment_fu插件,因为这可以让你很好地创建附件的模型,Paperclip插件也是另一个很好的插件!

如果您无法决定使用哪一个,据我所知,Paperclip可以让多个附件更容易,例如相册有很多照片,而附件_fu更容易用于单个附件,例如用户有一个显示器图片。

答案 3 :(得分:1)

我们在我管理的网站上做了类似的事情。我不同意将这些文件存储在数据库中,我同意这里的其他海报,并建议你尝试像Paperclip这样的东西。

有一点需要注意:如果您想要访问控制,请确保回形针不会将您的文件保存在/ public下,如果他们知道URL,任何人都可以访问它们。通过控制器中的send_file将文件传递给用户。