Custom Ecto.Type
TIL
594
Ecto
2
elixir
33
White

Vie viết ngày 07/07/2017

Custom Ecto.Type

Version hiện tại của Ecto.Type không support một số datatype sử dụng khi validate. Ví dụ như MapSet. Thành ra đành phải tự viết để dùng.

defmodule CustomMapSet do
  @behaviour Ecto.Type
  def type, do: {:mapset, :integer}

  def cast(mapset) when is_map(mapset) do
    if mapset |> MapSet.to_list |> Enum.all?(&is_number/1) do
      {:ok, mapset}
    else
      :error
    end
  end

  def cast(mapset), do: :error
  defdelegate dump(x), to: {:mapset, :integer}
  defdelegate load(x), to: {:mapset, :integer}
end

Và khai báo trong schema:

schema "tables" dodo
    field :id, :integer
    field :custom_col, CustomMapset
end

Nguồn tham khảo: https://github.com/joekain/date_ranges/tree/master/lib/date_ranges

VietNguyen 06-07-2017

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Vie

8 bài viết.
3 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
1 0
Ngôn ngữ truy vấn cho API GraphQL và Ecto GraphQL: http://graphql.org/ Thư viện GraghQL dùng trên Ecto: https://github.com/absinthegraphql/absint...
Vie viết 1 năm trước
1 0
White
1 1
Zoom in, zoom out trên webview Tag meta có name='viewport' sẽ định nghĩa trạng thái zoom in, zoom out. Các thuộc tính được set trong content='......
Vie viết 3 tháng trước
1 1
Bài viết liên quan
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 1 tháng trước
0 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
8 bài viết.
3 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!