Проверка модели Rails с помощью файлов - PullRequest
0 голосов
/ 03 ноября 2010

Я застрял на определенной части своего будущего веб-сайта на несколько дней и очень расстраивался.У меня есть код для загрузки логотипа для пользователя (код ниже) внутри logo = setter в модели activerecord пользователя, но это мешает мне использовать проверки модели.Могу ли я изменить порядок следования приведенному ниже коду, чтобы он был «красивым» и позволял мне использовать проверки моделей?

controllers / developer_controller.rb (соответствующие биты)

class DeveloperController < ApplicationController
  before_filter :load_developer

  def index
   redirect_to :controller=>'developers', :action=>'list' if params[:id].nil?
 end

 def manage
 end

 def set_logo
  if request.post? and !params[:logo].nil?
   @active_developer.logo=params[:logo]
   @write=@active_developer.logo
   @active_developer.save
  end
 end

private

  def load_developer
    if !params[:id].nil?
      @active_developer=Developer.fetch params[:id]
   else
     @active_developer=nil
   end
 end

end

Ответы [ 2 ]

2 голосов
/ 03 ноября 2010

Вы можете запутаться в некоторых понятиях.Как упомянул выше tadman, лучше всего использовать существующий плагин, attachment_fu - еще один хороший вариант.Если вы решите свернуть свою собственную, вы обычно:

  • Сохраните загруженный файл во временный файл
  • Не забудьте указать
    :html => { :multipart => true }
    в вашей форме
  • Создайте в модели атрибут (который не связан с полем базы данных) для хранения данных загруженного файла (имя / местоположение временного файла)
  • Используйте
    after_validation :save_file_attachment
    (запускается после проверки), чтобы переместить файл впоместите имя файла в атрибут логотипа.

Несколько идей, надеюсь, это поможет.Если это не учебное упражнение, используйте плагин:)

1 голос
/ 03 ноября 2010

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

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