2015-10-16 47 views
8

我想在我的Ecto模型中定義一個PostgreSQL-Hash類型的字段,但我不知道該怎麼做。我還沒有找到關於這個主題的明確指導,我假設它在這裏隱藏在這裏:http://hexdocs.pm/ecto/Ecto.Schema.html如何在Phoenix的Ecto模型中獲得PostgreSQL哈希值?

有沒有人在Ecto中做PostgreSQL-Hash字段的明確指南?

+0

也許你必須提供一個'Ecto.Type'實現來滿足你的需求? –

+0

可能。有沒有人以前做過這個,想分享? :-)在此期間,我將對此進行試驗。 –

+0

在附加了鏈接的文檔中有「地圖類型」部分,您是否嘗試過使用它? – JustMichael

回答

4

正如JustMichael所述,答案是:map類型。

表定義:

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 
); 

的外生模式:

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

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

現在我可以進入設置Nexus.Repo.get(Author, some_id).settings和得到的回報的地圖。