2009-12-31 2 views
1

Я только начал изучать рубины на рельсах, и я хотел бы создать приложение, которое позволит мне добавлять файлы в базу данных. В настоящее время я разрабатываю приложение rails, используя плагин Aptana для Eclipse, и приложение использует стандартную sqlite db.Добавить файл в базу данных в приложении Ruby on Rails?

Я попытался создать эшафот со следующими параметрами: documents title:string file:varbinary. Затем я делаю «rake» -> 'db' -> 'migrate'. Когда я переношу на localhost/документы и нажимаю «Новый документ», приложение не работает и отображает ошибку.

Что бы я хотел сделать, это нажать «Новый документ», иметь поле, которое позволит мне просмотреть документ на моем локальном компьютере, выбрать документ и добавить его в db в приложении rails.

ответ

4

Paperclip более рекомендуется, чем attachment_fu в эти дни. Это действительно просто и легко использовать с вашей активной моделью записи.

1

Это особый вид файла, который вы хотите добавить?

Я просто спрашиваю, потому что, если это не данные, которые могут быть использованы в базе данных (текстовые данные могут быть доступны для поиска, двоичные данные нет), тогда вы гораздо лучше храните его в файловой системе и обслуживаете его прямо - особенно для таких вещей, как изображения или видео, вместо того, чтобы вставлять их в базу данных и проходить через приложение каждый раз, когда пользователь запрашивает его.

Я не говорю, что нет никаких причин, по которым вы можете захотеть иметь файл в базе данных, но я рассматриваю это как последнее средство и через десять лет веб-программирования, я не сталкивался с ситуацией где это было необходимо.

+0

Мы пытаемся внедрить систему управления документами, которая реализует процесс компании. Поэтому документ необходимо хранить в центральном хранилище somesort, и он должен существовать в состояниях, к которым могут быть доступны только определенные пользователи в определенное время. С таким количеством контроля требуется - я думал, что это возможно только с помощью db? – Seth

+0

Вы можете реализовать это несколькими способами: если данные хранятся в области файловой системы, доступной только пользователю, использующему рельсы и системные администраторы, тогда вы можете делать все, что хотите, с точки зрения контроля доступа, поскольку запросы на файлы должны пройдите через ваше приложение, чтобы вы могли хранить данные о разрешениях в базе данных и только обслуживать файлы до разрешенных пользователей через ваш прикладной уровень. Или вы можете использовать разрешения для файловой системы и управлять им таким образом - возможно, для ваших системных администраторов будет проще работать. – glenatron

1

Я бы очень рекомендовал плагин attachment_fu, так как это позволяет вам создавать модели с вложениями довольно красиво, плагин Paperclip еще один хороший!

Если у вас возникли проблемы с решением вопроса о том, какой из них использовать, насколько я помню, Paperclip упрощает использование нескольких приложений, например, у альбома много фотографий, а Attachment_fu проще для отдельных приложений, таких как Пользователь имеет один показать картинку.

+0

хороший. Нашел хороший учебник здесь: 'http: // clarkware.com/cgi/blosxom/2007/02/24 # FileUploadFu' – Seth

1

Мы делаем что-то подобное на сайте, которым занимаюсь. Вместо того, чтобы хранить эти файлы в базе данных, я согласен с другими плакатами здесь и рекомендую попробовать что-то вроде Paperclip.

Одно предупреждение: если вы хотите контролировать доступ, убедитесь, что скрепка не сохраняет ваши файлы где-то под/public, где любой может получить к ним доступ, если они знают URL. Предоставляйте файлы пользователю через файл send_file в контроллере.