2015-10-16 8 views
8

私のEctoモデルでPostgreSQL-Hashタイプのフィールドを定義したいのですが、どうすればよいか分かりません。私はこのトピックに関する明白なガイドを見つけておらず、ここに隠れていると仮定しています。http://hexdocs.pm/ecto/Ecto.Schema.htmlPhoenixの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へのアクセスを取得し、見返りにマップを得ることができます。

関連する問題