2016-03-25 2 views
1

Einer meiner Aktionen in den Protokollen Phoenix nicht existiert mitEcto: Spalte v0.availabilites nicht

(Postgrex.Error) ERROR (undefined_column): column v0.availabilites does not exist 

der Suche, fand ich die Abfrage, die den Fehler generiert:

[debug] SELECT v0.id, v0.event_id, v0.availabilites, v0.inserted_at, v0.updated_at 
FROM votes AS v0 WHERE (v0.event_id IN ($1)) ORDER BY v0.event_id [1] ERROR query=185.8ms 

Die absurde Sache ist, dass die erwähnte Spalte existiert! Hier ist die Ausgabe von psql:

Table "public.votes" 
    Column  |   Type    |      Modifiers      
----------------+-----------------------------+---------------------------------------------------- 
id    | integer      | not null default nextval(votes_id_seq::regclass) 
availabilities | jsonb      | 
inserted_at | timestamp without time zone | not null 
updated_at  | timestamp without time zone | not null 
event_id  | integer      | 
Indexes: 
    "votes_pkey" PRIMARY KEY, btree (id) 
    "votes_event_id_index" btree (event_id) 
Foreign-key constraints: 
    "votes_event_id_fkey" FOREIGN KEY (event_id) REFERENCES events(id) ON DELETE CASCADE 

Wie Sie sehen können, die Spalte ist da! Hier sind die beiden relevanten Modelle:

defmodule LetsPlan.Vote do 
    use LetsPlan.Web, :model 

    schema "votes" do 
    belongs_to :event, LetsPlan.Event 
    embeds_many :availabilites, LetsPlan.Availability 

    timestamps 
    end 

    @required_fields ~w(availabilites event_id) 
    @optional_fields ~w() 

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

defmodule LetsPlan.Availability do 
    use LetsPlan.Web, :model 

    embedded_schema do 
    field :from, Ecto.Date 
    field :to, Ecto.Date 
    end 
end 

Antwort

4

Sie haben einen Tippfehler:

embeds_many :availabilites, LetsPlan.Availability 

Sollte sein:

embeds_many :availabilities, LetsPlan.Availability