2016-05-19 4 views
1

Ecto.Model.Callbacksは廃止予定です。Ecto:Model.Callbacksなしでチェンジセットにデータを挿入する方法

before_insertと同じ動作を達成しようとしていますが、役に立たないです!私はchangeset/2の中にIO.puts("hello")を誘発するものさえも得られません。

は、ここで私が持っているものです。

def changeset(model, params \\ :empty) do 
    IO.puts "HELLO" # never prints 
    model 
    |> cast(params, @required_fields, @optional_fields) 
    |> put_change(:column_name, "hello") 
end 

代わりのput_change、私はchangecast、およびEcto.Changeset内部の他の実質的にすべてを下塗り試みました。

私も念のため、非配管方法を試してみた:エンド目標は、スキーマにはありません行のinserted_at新しい値についてのシフト、とても簡単default: "hello"

chset = cast(model, params, @required_fields, @optional_fields) 
put_change(chset, :column_name, "hello") 

十分です。

多くの感謝!

+3

あなたのコードから明示的に 'YourModel.changeset'を呼び出していますか? – Dogbert

+0

チェンジセットパイプラインにカスタム関数を追加しようとしましたが、チェンジセットが適用されたチェンジセットが返されます – coderVishal

答えて

0

私はPostgresの断片を使って解決しました。

これは私が探していたものではありませんので、回答はchangsetという人のために開いておきます。

私のの解決方法は、postgresの移行ファイルが含まれています。

create table(:stuffs) do 
    add :expires_at, :datetime, default: fragment("now() + interval '60 days'") 
end 
関連する問題