Khi tải các kiểu ngày/giờ từ cơ sở dữ liệu, Ecto sẽ chuyển sang kiểu Ecto.DateTime. Làm thế nào các đúc loại tương tự có thể được áp dụng khi tải một mô hình từ một chuỗi JSONCách nhập JSON giải mã JSON như thể nó xuất phát từ cơ sở dữ liệu
defmodule Rocket.User do
use Rocket.Model
schema "users" do
field :created_at, :datetime
field :name, :string
field :email, :string
field :password, :string
field :timezone, :string
end
end
iex(40)> Poison.decode!(~s({"created_at":"2015-01-21T06:05:10.891Z"}), as: Rocket.User)
%Rocket.User{created_at: "2015-01-21T06:05:10.891Z", email: nil, id: nil,
name: nil, password: nil, timezone: nil}
cảm ơn liên kết đến các loại tùy chỉnh, đây vẫn là phương pháp ưu tiên nếu dữ liệu được tin cậy. JSON trong trường hợp này đang được sử dụng để tuần tự hóa/deserialize các mô hình để các chương trình bằng các ngôn ngữ khác nhau có thể làm việc với dữ liệu – Krut
Điều này sẽ làm việc cả hai cách ngay cả khi dữ liệu được tin cậy. :) Vì vậy, bạn tốt. –
là điều này vẫn còn hợp lệ, diễn viên trả về một changeset mà tôi sau đó cần phải áp dụng để có được chế độ, có vẻ đắt tiền 'Ecto.Changeset.cast (Poison.decode! (Dữ liệu),% Rocket.User {}, ~ w (required_fields) , ~ w (optional_fields)) |> Ecto.Changeset.apply_changes' – Krut