Phoenixのschemaにあるchangesetはいったい何なのか

Elixir Phoenix Web
更新2020/11/26
createのメソッド呼ぶと出てくるcastやchangesetの意味についてまとめておきます。
phoenixで何かをレコードを保存しようとする関数は大概schemaのchangesetという関数を呼んでいます。
そしてそのなかにあるcastという関数が自分にとっては混乱のもとでした。

このcastという関数の出所はEcto.Changeset.cast/4でした。
これは4つの引数(最後の一つは省略可)を取って、チェンジセット構造体を作ってくれるEctoの関数。
とくにわかりにくいのが第一引数のdataで、これはスキーマ構造体{スキーマ構造体, パラメータのmap}という構造のタプル、さらにはすでに生成されているチェンジセット構造体も受け取ることができます。これが初見だと何が何やらわからず迷宮入りしていました。

理路整然と並べてみるとたしかに意図した引数を取っています。
こうして生成されたチェンジセット構造体を別の関数が引数にとってバリデーションやレコードのinsertを行うようです。
完全な説明ではないかもしれませんが、ひとまずこれで表面上の理解は通りそうです。
書いた人/このブログについて

サーバーサイドエンジニア。お仕事ではRubyとPerl。趣味ではC#やHLSLなどを少しと、3DCGでPythonをごまかしながら使う感じ。Unityとインフラ周りも好き。

自分の備忘録もGoogle検索に任せたくてこのブログ書いてる。Phoenix製でEC2上で稼働中。