在药剂的外生
问题描述:
VARCHAR(custom_size)的PostgreSQL的阵列I具有外生模式是这样的:在药剂的外生
schema "quotes" do
field :quote, :string
field :tags, {:array, :string}
timestamps()
end
在对应的迁移有:
create table(:quotes) do
add :quote, :string, size: 145
add :tags, {:array, :string}
timestamps()
end
我想在tags
每个标签是最大大小为140.如何在迁移中指定此约束?我的目标是在生成的PostgreSQL表中有一个varchar(140)
数组,而不是更多'spacy'默认值(255?)。
答
add
接受任何原子作为列类型,并将其作为-是到适配器和PostgreSQL的适配器发送未知类型原样到数据库中,这意味着我们可以作为第二元素中指定的确切类型,即varchar(140)
{:array, _}
,它只需要是一个原子。
add :tags, {:array, :"varchar(140)"}
我测试了这个,正确运行迁移创建了类型需求的列。
my_app_dev=# \d posts
Table "public.posts"
Column | Type | Modifiers
----------+--------------------------+---------------------------------------------------
...
tags | character varying(140)[] |
有没有必要改变schema
任何东西。那里的类型应该保持{:array, :string}
。