문제

저는 현재 Rails 앱용으로 멋진 attachment-fu 플러그인을 사용하고 있지만 초보 개발자로서 제가 겪은 것과 같은 시나리오를 본 적이 없습니다.

본질적으로 나는 두 가지 수준에서 attachment-fu 플러그인을 사용하고 있습니다.

  1. 사용자 클래스의 사용자 아바타용입니다.
  2. 파일 첨부를 허용하는 것입니다(PDF, 등) 메시징 시스템에서.

내 질문은 이러한 상황에서 가장 좋은 사용 방법이 무엇인지입니다. 마른, 명확하고 일관성이 있습니다.

분명히 두 클래스 모두에서 플러그인을 정의하고 실행하는 것은 의미가 없지만, 계속해서 신의 Application 클래스에서 모든 것을 설정하는 것은 나에게 매우 이상한 것입니다(아마 근거가 없을 수도 있음).

그 사이에 뭔가가 있습니까, 아니면 부모 클래스가 갈 길입니까?

감사해요!

도움이 되었습니까?

해결책

나는 응용 프로그램에서 첨부 파일을 실제로 사용하려는 다양한 방법에 대한 하위 클래스를 사용하여 상위 클래스를 사용하는 쪽으로 기울고 싶습니다.사용 가능한 DRYest 솔루션은 아닐 수도 있지만 논리적 패턴에 적합합니다.

다른 팁

attachment_fu 설정을 두 번 정의할 때 발생하는 DRY 문제는 무엇입니까?

파일이 동일한 유형이고 동일한 위치에 저장되지 않는 한 구성에서 아무 것도 반복하지 않을 것입니다.

물론 두 개의 has_attachment 선언이 있지만 옵션은 대부분 다릅니다(하나는 아바타에 대한 선언이고 다른 하나는 PDF에 대한 선언 등).

첨부 파일을 처리하는 코드의 99.99%는 attachment_fu 라이브러리에 묻혀 있으며 구성 코드는 기본적으로 매우 DRY여야 합니다 =)

아바타 지원을 전적으로 "아웃소싱"하고 있습니까? 그라바타 옵션?Gravatar에서 호스팅하는 아바타를 표시하는 일부 Rails 플러그인이 있습니다.거기에서 바퀴를 다시 발명할 필요가 없을 수도 있습니다.

wfarr가 설명하는 것은 다음과 같습니다. 단일 테이블 상속, 이것이 제가 현재 이 상황에서 하고 있는 일입니다.필요한 모든 attachment_fu 열과 실제 모델 이름을 보유할 type이라는 추가 열을 포함하는 자산에 대한 테이블이 하나 있습니다.자산에 대한 모델과 자산에서 상속되는 특정 업로드 유형에 대한 추가 모델이 있습니다.

자산.rb:

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

아바타.rb:

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

pdf.rb:

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

사용하지 못하셨나요? 다형성 연관?

내 앱에서 attachment_fu를 사용하여 이 문제를 해결하려고 하므로 attachment_fu에 대해 정확히 확신할 수는 없지만 예전 방식의 경우에는 그렇습니다. 파일 열 플러그인을 사용하려면 다형성 연관을 사용하겠습니다.

내 "파일" 모델은 다음과 같습니다.

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

파일 첨부가 필요한 모델은 다음과 같습니다.

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

파일 열은 Safari 3.x에서 중단되고 더 이상 유지 관리되지 않으므로 더 이상 좋지 않습니다.심플하고 좋았지만..아, 좋았던 시절...

그만한 가치가 있다고 생각하면 Patrick Berkeley가 Paperclip 플러그인을 통해 여러 첨부 파일을 처리하는 데 훌륭한 역할을 했다고 생각합니다.그는 자신의 작업을 여기에 설명했습니다.

http://gist.github.com/33011

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top