2016-06-10 55 views
1

林有:地圖領域的「團體」在我的外生模型和IM需要將一些數據插入到它。鳳凰框架和外生地圖領域

例子:林有一些用戶信息,如:用戶名: 「測試儀」,組: 「默認」 等

在數據庫中保存, 「組」 字段應該看起來像後:

[{username: "tester", group: "default"}, {username: "tester1", group: "admin"} etc...] 

另外我怎麼可以修改這個領域的功能數據(當我需要添加一些額外的記錄爲例)?

+0

細節你的意思是像'[{用戶名映射的列表:...,組:...},{username:...,group:...}]'?您當前的示例值無效。 – Dogbert

+0

是的,已編輯。謝謝 – bartezr

+1

你還可以在你的模型中加入'field:groups,...'聲明嗎?以及您使用的是哪個數據庫? PostgreSQL的? – Dogbert

回答

2

您可以使用embeds_many/3

這裏是你

defmodule MyApp.UserGroup do 
    use Ecto.Schema 

    embedded_schema do 
    field :username 
    field :group 
    end 
end 

樣品溶液可以用embeds_many您的架構添加它

defmodule MyApp.Group do 
    use Ecto.Schema 

    schema "groups" do 
    embeds_many :usergroups, MyApp.UserGroup 
    timestamps 
    end 
end 

讓我們創建一個組

changeset = Ecto.Changeset.change(%Group{}) 
      |> Ecto.Changeset.put_embed(:usergroups, [ 
       {username: "tester", group: "default"}, 
       {username: "tester1", group: "admin"}]) 

group = Repo.insert!(changeset) 

你可以與用戶羣體的採集工作,然後只是把它作爲一個變化再次&你可以找到在this blog post