2016-04-26 11 views
5

Qualcuno può aiutare con quello che deve essere uno stupido errore che temo. Considerate queste due frammenti:date di semina di Phoenix

defmodule MosaicApi.Repo.Migrations.CreateCard do 
    use Ecto.Migration 

    def change do 
    create table(:cards) do 
     add :creation_date, :date 

e

defmodule MosaicApi.Card do 
    use MosaicApi.Web, :model 

    schema "cards" do 
    field :creation_date, Ecto.Date 

Sto cercando di seminare alcuni dati utilizzando

cards = [ 
    %Card{ 
     creation_date: "2014-04-17", 

ho ottenuto questi semplici stringhe da cose che ho trovato su Internet; l'alternativa sembrava essere {"2015", "04", "17"}.

** (Ecto.ChangeError) Valore "2014-04-17" per MosaicApi.Card.creation_date in insert non corrisponde al tipo Ecto.Date

+0

Che dire di 'timestamp', puoi estrarre' creation_date' da lì – Nomad

risposta

6

Prova questa:

cards = [ 
    %Card{ 
    creation_date: %Ecto.Date{year: 2014, month: 4, day: 17}, 

Oppure:

cards = [ 
    %Card{ 
    creation_date: Ecto.Date.cast!("2014-04-17"), 

I generatori per i test sono stati recentemente cambiati m il formato stringa (che potrebbe essere il luogo in cui hai ottenuto l'idea) https://github.com/phoenixframework/phoenix/commit/badf8065d0b025d6b6ad212bfa0b96e897f06a6a

+0

Che sembrava funzionare, ma dovrò fare questa struttura ogni volta una data entra. Il lato client è Elm che per impostazione predefinita produce date come '1461660831027' –

+0

Ho aggiornato un modo per utilizzare la stringa originale che hai fornito. – Gazler

+0

Consulta http://michal.muskala.eu/2015/07/30/unix-timestamps-in-elixir.html per timestamp – Gazler