如何在Phoenix的Ecto模型中获取PostgreSQL哈希值?

8

我想在我的Ecto模型中定义一个PostgreSQL-Hash类型的字段,但我不确定如何做。我没有找到关于这个主题的明确指南,我假设它可能隐藏在这里:http://hexdocs.pm/ecto/Ecto.Schema.html

有人有在Ecto中创建PostgreSQL-Hash字段的明确指南吗?


也许你需要提供一个 Ecto.Type 实现来满足你的需求? - Tom Regner
可能有人做过这个并且愿意分享吗? :-) 在此期间,我会尝试一下。 - Philip Claren
你附上的文档中有一个“地图类型”部分,你尝试使用过吗? - NoDisplayName
是的,就是这样。谢谢!我来自Rails,所以我觉得我被命名搞混了。 - Philip Claren
@JustMichael 你应该将其发布为答案,这样其他人就可以找到它了。 - Onorio Catenacci
1个回答

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

Ecto 模型:
defmodule Nexus.Author do
  use Nexus.Web, :model

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

现在我可以访问设置Nexus.Repo.get(Author, some_id).settings,并返回一个地图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接