рельсы активной модели для хранения данных в файле вместе с базой данных - PullRequest
1 голос
/ 20 сентября 2011

У меня есть форма, и когда она публикуется, некоторые ее данные сохраняются в базе данных с использованием модели rails.Наряду с базой данных мне нужно сохранить часть содержимого в файл.Могу ли я улучшить метод «сохранить» в модели, чтобы записать содержимое в файл?Это хороший дизайн.Если бы не то, что было бы идеальным дизайном.

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

Спасибо, Киран

1 Ответ

0 голосов
/ 20 сентября 2011

Конечно, вы можете использовать одну из существующих готовых библиотек вложений файлов, например, paperclip и carrierwave .

В противном случае вы можете:

# config/application.rb
# ...
config.my_app.cache_file_prefix = "/tmp/files"

# app/models/my_model.rb
class MyModel < ActiveRecord::Base

  # Causes ActiveRecord to run this method
  # before saving (creating or updating).
  before_save :copy_to_file

private

  def copy_to_file
    # Write data to the file.
    file_name = copy_to_file_name
    File.open(file_name) do |f|
      f.write("some data")
    end
  end

  def copy_to_file_name
    # Calculate and return the expected file name.
    prefix = Rails.configuration.my_app.cache_file_prefix
    "#{prefix}/#{id}"
  end

end

Обратите внимание, что это решение не будет работать, если у вас есть более одного сервера, на котором запущено приложение Rails. Вам следует рассмотреть возможность использования поставщика хранилища объектов (такого как S3 или Rackspace) или реплицированной или распределенной файловой системы (такой как DRDB или GlusterFS).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...