Сведения о вопросе

nikolya

16:01, 12th August, 2020

Будучи как DRY, насколько это возможно в Ruby на Rails приложение

Просмотров: 379   Ответов: 6

В настоящее время я использую удивительный плагин attachment-fu для приложения Rails, но как начинающий разработчик я никогда не сталкивался с сценарием, подобным тому, в котором я оказался.

По сути, я использую плагин attachment-fu на двух уровнях.

  1. Это для пользовательских аватаров в классе user.
  2. Это разрешить вложения файлов ( PDFs и т. д.) В системе обмена сообщениями.

Мой вопрос заключается в том , какой наилучшей практикой использования было бы в этих ситуациях оставаться DRY , ясным и последовательным.

Очевидно, что нет смысла определять и выполнять плагин в обоих классах, но есть что-то очень странное для меня (возможно, необоснованное) о том, чтобы просто идти вперед и настраивать все это в классе божественного приложения.

Есть ли что-то между ними, или родительский класс-это путь?

Спасибо!



  Сведения об ответе

davran

20:06, 27th August, 2020

В чем проблема DRY с определением параметров attachment_fu дважды?

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

Конечно, у вас будет два объявления has_attachment, но варианты будут в основном отличаться (одно объявление для ваших аватаров, а другое для ваших pdf и т. д.

99.99% кода для обработки вложений будет похоронен в библиотеках attachment_fu, ваш код конфигурации должен быть довольно DRY по умолчанию =)


  Сведения об ответе

ASER

20:43, 12th August, 2020

Является ли поддержка Аватара "outsourcing" полностью для Граватара вариантом? Есть некоторые плагины Rails, которые будут отображать аватары, размещенные Gravatar. Возможно, Вам не придется заново изобретать колесо там.


  Сведения об ответе

SKY

12:05, 7th August, 2020

То, что описывает wfarr, будет наследованием одной таблицы, что я сейчас делаю в этой ситуации. У меня есть одна таблица для активов, которая содержит все необходимые столбцы attachment_fu, плюс дополнительный столбец с именем type, который будет содержать фактическое имя модели. У меня есть модель для активов и дополнительные модели для конкретных типов загрузки, которые наследуются от активов:

asset.rb:

class Asset < ActiveRecord::Base
  ... attachment_fu logic ...
end

avatar.rb:

class Avatar < Asset
  ... avatar specific attachment_fu logic ...
end

pdf.rb:

class PDF < Asset
  ... PDF specific attachment_fu logic ...
end


  Сведения об ответе

$DOLLAR

19:19, 10th August, 2020

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


  Сведения об ответе

JUST___

04:31, 1st August, 2020

Не могли бы вы использовать полиморфные Ассоциации ?

Я собираюсь поразить это в своем приложении с помощью attachment_fu, поэтому я не совсем уверен в attachment_fu, но для плагина old school File Column я бы использовал полиморфные Ассоциации.

Моя модель "file" будет:

    class FileUpload < ActiveRecord::Base
      belongs_to :fileable, :polymorphic => true
      file_column :name
    end

и тогда любые модели, которые нуждались в прикреплении файла, будут похожи:

    class Company < ActiveRecord::Base
      has_many :file_uploads, :as => :fileable
    end

Столбец File больше не подходит, поскольку он борется с Safari 3.x и больше не поддерживается. Это было приятно и просто, хотя... Ах, старые добрые времена...


  Сведения об ответе

appple

22:45, 5th August, 2020

Для чего это стоит, Я думаю, что Патрик Беркли проделал хорошую работу с обработкой нескольких вложений через плагин Paperclip. Он изложил свою работу здесь:

http://gist.github.com/33011


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться