2015-10-11 48 views
27

我想用Ecto使用Postgres存儲浮點數值的數組。 我正在使用Ecto與Phoenix Framework和Elixir。如何用Ecto使用Postgres存儲數組

我該如何定義我的模型和遷移?

我還沒有嘗試過了,除了在網上搜索,這沒有找到:-(

有用的東西我也嘗試定義與這樣的架構模型:

schema "my_model" do 
    field :my_array, :array 

    timestamps 
    end 

這給了一個錯誤「無效或未知類型:現場數組:my_array」

回答

39

我發現在原始類型爲Ecto.Schema此列表中的答案:

Ecto.Schema

答案是這樣定義的類型:

schema "my_model" do 
    field :my_array, {:array, :float} 

    timestamps 
    end 
+5

謝謝你,你會怎麼寫的遷移? – neildaemond

+0

這裏是一個生成器的例子:'mix phx.gen.schema Blog.Post blog_posts tags:array:string' – Sash

20

,你寫的使用從Ecto.Schema

數組類型在模型中:

schema "my_model" do 
    field :my_array, {:array, inner_type} 
end 

@neildaemond遷移:

alter table(:my_models) do 
    add :my_array, {:array, inner_type} 
end 

inner_type替換爲其中一個有效類型,例如:string

你也可以做同樣的事情用map類型:

schema "my_model" do 
    field :my_map, {:map, inner_type} 
end 
+1

任何想法如何正確地構造一個表單,讓別人輸入這個數組或地圖的元素? – pmarreck

+0

@pmarreck你看過表格文檔嗎? https://hexdocs.pm/phoenix_html/Phoenix.HTML.Form.html 我通常在一個API應用程序上工作,所以我不使用窗體,並不能幫助 –

+0

我有,沒有看到任何有用的東西在這個案件 – pmarreck

相關問題