2017-02-17 11 views
0

Как написать миграцию в Ecto, чтобы удалить значение по умолчанию для столбца? Скажем, у меня есть таблица под названием :users с колонкой под названием :timezone что ранее дефолте к «Etc/UTC» ...Как удалить столбец по умолчанию в Ecto?

Вот начало моей миграции ...

def up do 
    alter table(:users) do 
     modify :timezone, :string, default: fragment("NULL"), null: true 
    end 
    end 
    def down do 
    alter table(:users) do 
     modify :timezone, :string, default: "Etc/UTC", null: false 
    end 
    end 
+0

Думаю, вам нужно выполнить 'default: nil'. Вы видите, работает ли это? – Dogbert

+0

Я только что проверил. 'default: nil' будет устанавливать по умолчанию значение' NULL'. Он не будет точно «DROP» по умолчанию (например, вы получите с часовым поясом «ALTER COLUMN» «DROP DEFAULT»). Я не нашел упоминания о «DROP DEFAULT» в Ecto, поэтому я считаю, что это невозможно сейчас. – Dogbert

ответ

0

От https://www.postgresql.org/docs/9.3/static/ddl-default.html

Если значение по умолчанию не указано явно, значением по умолчанию является значение null.

Так что @Dogbert прав, default: nil - это путь.

Если вы действительно этого хотите, вы можете написать команду SQL ALTER COLUMN "timezone" DROP DEFAULT, используя execute/1.

 Смежные вопросы

  • Нет связанных вопросов^_^