2016-03-02 154 views

回答

8

timestamps/1函數接受一個選項關鍵字列表,您可以使用它設置默認值。

def change do 
    alter table(:channels) do 
    timestamps default: "2016-01-01 00:00:01", null: false 
    end 
end 


UPDATE外生> = 2.1
你需要使用新的類型NaiveDateTime

def change do 
    alter table(:channels) do 
    timestamps default: ~N[2017-01-01 00:00:01], null: false 
    end 
end 

如果您有更多的懷疑看看的documentation

+0

外生2.0已取消這個選項:(可能最好的解決辦法是手動添加兩個字段。 –

+2

原來的解決方案剛剛在Ecto 3.2中工作:) ...''timestamps default:「2016-01-01 00:00:01」,null:false' - 這是原始未更新的答案。 –

0

我想你會得到這個當你嘗試更新的記錄,我能想到2個可能的解決方案,您既可以在你的餐桌觸摸inserted_at列通過運行一個UPDATE查詢或添加功能,以您的外生模型,像這樣

def create_changeset(model, attrs) do 
    model 
    |> cast(attrs, @required_fields, @optional_fields) 
    |> update_inserted_at 
    end 

    defp update_inserted_at(changeset) do 
    # check if the updated field is null set a new date 
    end