2015-10-16 12 views
8

Chcę zdefiniować pole typu PostgreSQL-Hash w moim modelu Ecto, ale nie jestem pewien jak to zrobić. Nie znalazłem jednoznacznego przewodnika na ten temat i zakładam, że jest tu gdzieś ukryty: http://hexdocs.pm/ecto/Ecto.Schema.htmlJak uzyskać wartości skrótów PostgreSQL w modelach Ecto firmy Phoenix?

Czy ktoś ma ostateczny przewodnik do wykonywania pól Hash PostgreSQL w Ecto?

+0

Może musisz podać implementację 'Ecto.Type', aby spełnić Twoje potrzeby? –

+0

Może być. Czy ktoś wcześniej to zrobił i chce się podzielić? :-) W międzyczasie będę eksperymentować z tym. –

+0

Istnieje sekcja "Typ mapy" w dokumentach, do których masz dołączone łącze, czy próbowałeś go użyć? – JustMichael

Odpowiedz

4

Jak stwierdził Just Michael, odpowiedzią jest typ :map.

definicji tabeli:

CREATE TABLE public.authors (
    id INTEGER PRIMARY KEY NOT NULL DEFAULT nextval('authors_id_seq'::regclass), 
    settings HSTORE, 
    updated_at TIMESTAMP WITHOUT TIME ZONE, 
    inserted_at TIMESTAMP WITHOUT TIME ZONE 
); 

środek ekto model:

defmodule Nexus.Author do 
    use Nexus.Web, :model 

    schema "authors" do 
    field :settings, :map 
    timestamps 
    end 
end 

Teraz mogę uzyskać dostęp do ustawień Nexus.Repo.get(Author, some_id).settings i dostać mapę w zamian.

Powiązane problemy