Arc and Arc_Ecto Storying : map 필드를 사용한 여러 이미지

엘리아스 페레즈

필드에 여러 이미지를 첨부하려고합니다. 이미지 모델에 대한 연결을 쉽게 만들 수 있지만 맵 / 배열 필드를 사용하여 동일한 작업을 수행 할 수있는 방법을 알고 싶습니다.

모델은 다음과 같습니다.

schema "users" do
  field :images, {:array}
end

def changeset(user, params \\ :invalid) do
  user
  |> cast(params, [:name])
  |> cast_attachments(params, [:avatar])
  |> validate_required([:name, :avatar])
end
티아고 엥겔

내가 아는 한 배열 / 맵을 직접 사용하는 것은 지원되지 않습니다.

그러나 스키마를 사용하여 맵으로 저장할 수 있습니다.

이것은 작동합니다.

defmodule Image do
  use Ecto.Schema      
  use Arc.Ecto.Schema

  import Ecto
  import Ecto.Changeset

  @required_fields ~w(file)
  @optional_fields ~w()

  embedded_schema do
    field :file, MyApp.UserImage.Type
  end

  def changeset(model, params \\ :empty) do
    model
    |> cast(params, @required_fields, @optional_fields)
    |> cast_attachments(params, [:file])
  end

end

defmodule User do
  use Ecto.Schema      

  import Ecto
  import Ecto.Changeset

  schema "projects" do
    field :code, :string
    embeds_many :images, MyApp.Image
  end

  def changeset(model, params \\ :empty) do
    model
    |> cast(params, @required_fields, @optional_fields)            
    |> cast_embed(:images) # invoke changeset in the embed module 
  end
end

그런 다음 이렇게 사용할 수 있습니다.

images = [%{file: "image1"}, %{file: "image2"}]
changeset = User.changeset(user, %{"images" => images})
new_user = Repo.update!(changeset)
urls = Enum.map new_user.images, fn image ->
  UserImage.urls({image.file, new_user})      
end

유일한 단점은 이미지를 저장할 때 더 이상 모듈 에서 scope매개 변수를 사용할 수 없다는 것 UserImage입니다. 이는 arc_ecto가 scopecast_attachments 함수를 호출 할 때 모델을 사용 하고 이제 함수를 호출 할 때 원래 모델 (User) 이 없기 때문 입니다.

마이그레이션 파일에서 이미지 필드를 :map

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

ARC에서 블록을 사용하여 미묘한 유지주기 이해

분류에서Dev

ARC를 사용하여 프로젝트에 C 라이브러리를 추가 할 때 발생하는 오류

분류에서Dev

Arc를 사용한 Kinetic.js 사용자 지정 적중 영역

분류에서Dev

ARC를 사용하여 NSArray 또는 NSMutableArray 가능한 메모리 누수

분류에서Dev

여러 입력 필드에서 멀터를 사용하여 여러 이미지 파일 업로드

분류에서Dev

DropzoneJS를 사용하여 여러 이미지에 대한 병렬 업로드

분류에서Dev

Picasso 라이브러리를 사용하여 이미지를 한 번로드

분류에서Dev

OS X : ARC 및 블록 기반 시트 API를 사용하여 컨트롤러를 유지하는 방법은 무엇입니까?

분류에서Dev

ARC를 사용하여 블록을 해제하는 방법

분류에서Dev

동일한 UIImagePickerController를 사용하여 여러 이미지 뷰에 이미지를로드하는 방법

분류에서Dev

javascript context.arc를 이미지로 바꾸기

분류에서Dev

gd 라이브러리를 사용하여 이미지로드

분류에서Dev

JS를 사용하여 캔버스에서 Arc를 이동할 수 없습니다.

분류에서Dev

미러를 사용하여 라이브러리 내부 필드에 액세스

분류에서Dev

미러를 사용하여 라이브러리 내부 필드에 액세스

분류에서Dev

arc4random iOS를 사용한 확률 방정식

분류에서Dev

ARC를 사용한 자동화 테스트?

분류에서Dev

FFMPEG를 사용하여 여러 정적 이미지 사용

분류에서Dev

ARC Bluetooth 지원

분류에서Dev

Codeigniter 컨트롤러를 사용하여 이미지 업로드

분류에서Dev

SDWebImage를 사용하여 여러 크기의 이미지에 대한 이미지를 캐시하는 방법

분류에서Dev

모달을 사용하여 클릭 한 여러 이미지를 새 이미지로 교체

분류에서Dev

imagemagick을 사용하여 여러 이미지에 동일한 이미지를 추가하는 방법

분류에서Dev

ARC 및 MRR을 모두 지원하는 라이브러리 코드 작성

분류에서Dev

arc4random을 여러 번 호출하고 동일한 배열 세트를 가져옵니다.

분류에서Dev

StrongLoop Arc를 사용하여 StrongLoop PM에 연결할 수 없습니다.

분류에서Dev

Scrapy를 사용하여 쿠키가 필요한 이미지를 다운로드하는 방법

분류에서Dev

여러 이미지를위한 이미지 뷰어

분류에서Dev

videomixer [GStreamer]를 사용하여 여러 이미지 파일 결합

Related 관련 기사

  1. 1

    ARC에서 블록을 사용하여 미묘한 유지주기 이해

  2. 2

    ARC를 사용하여 프로젝트에 C 라이브러리를 추가 할 때 발생하는 오류

  3. 3

    Arc를 사용한 Kinetic.js 사용자 지정 적중 영역

  4. 4

    ARC를 사용하여 NSArray 또는 NSMutableArray 가능한 메모리 누수

  5. 5

    여러 입력 필드에서 멀터를 사용하여 여러 이미지 파일 업로드

  6. 6

    DropzoneJS를 사용하여 여러 이미지에 대한 병렬 업로드

  7. 7

    Picasso 라이브러리를 사용하여 이미지를 한 번로드

  8. 8

    OS X : ARC 및 블록 기반 시트 API를 사용하여 컨트롤러를 유지하는 방법은 무엇입니까?

  9. 9

    ARC를 사용하여 블록을 해제하는 방법

  10. 10

    동일한 UIImagePickerController를 사용하여 여러 이미지 뷰에 이미지를로드하는 방법

  11. 11

    javascript context.arc를 이미지로 바꾸기

  12. 12

    gd 라이브러리를 사용하여 이미지로드

  13. 13

    JS를 사용하여 캔버스에서 Arc를 이동할 수 없습니다.

  14. 14

    미러를 사용하여 라이브러리 내부 필드에 액세스

  15. 15

    미러를 사용하여 라이브러리 내부 필드에 액세스

  16. 16

    arc4random iOS를 사용한 확률 방정식

  17. 17

    ARC를 사용한 자동화 테스트?

  18. 18

    FFMPEG를 사용하여 여러 정적 이미지 사용

  19. 19

    ARC Bluetooth 지원

  20. 20

    Codeigniter 컨트롤러를 사용하여 이미지 업로드

  21. 21

    SDWebImage를 사용하여 여러 크기의 이미지에 대한 이미지를 캐시하는 방법

  22. 22

    모달을 사용하여 클릭 한 여러 이미지를 새 이미지로 교체

  23. 23

    imagemagick을 사용하여 여러 이미지에 동일한 이미지를 추가하는 방법

  24. 24

    ARC 및 MRR을 모두 지원하는 라이브러리 코드 작성

  25. 25

    arc4random을 여러 번 호출하고 동일한 배열 세트를 가져옵니다.

  26. 26

    StrongLoop Arc를 사용하여 StrongLoop PM에 연결할 수 없습니다.

  27. 27

    Scrapy를 사용하여 쿠키가 필요한 이미지를 다운로드하는 방법

  28. 28

    여러 이미지를위한 이미지 뷰어

  29. 29

    videomixer [GStreamer]를 사용하여 여러 이미지 파일 결합

뜨겁다태그

보관