Использование скрепки с существующим столбцом

У меня есть существующий столбец базы данных с именем "profile_picture", который в настоящее время является текстовым столбцом. Я хотел бы использовать гем paperclip, чтобы позволить пользователям загружать свои собственные "profile_picture".

Как мне лучше всего подойти к этой проблеме? Должен ли я удалить столбец "profile_picture" и запустить новую миграцию скрепки, или я могу каким-то образом изменить этот столбец и добавить связанные поля file_name, content_type и т. Д.?

1 ответ

Так как procile_picture не является столбцом, который обычно использует скрепка (атрибут profile_picture использует столбец profile_picture_file_name) нет необходимости снимать колонку. Однако сбивает с толку наличие в вашей базе данных столбца, который не сопоставляется с атрибутом с аналогичным именем (поскольку методы set и get предоставляются paperclip), поэтому я бы переименовал его, вероятно, перед созданием paperclip... или лучше: просто удалите столбец, если он бесполезен. Попробуйте привести в порядок все, что сможете.

Я настоятельно рекомендую переименовать колонку в profile_picture_file_name потому что он может содержать данные, с которыми скрепка не может иметь дело.

class AddAvatarColumnsToUsers < ActiveRecord::Migration
  def self.up
    rename_column :users, :profile_picture, :old_profile_picture
    add_attachment :users, :profile_picture
  end
  def self.down
    remove_attachment :users, :profile_picture
    rename_column :users,  :old_profile_picture, :profile_picture
  end
end
Другие вопросы по тегам