読者です 読者をやめる 読者になる 読者になる

mmag

ハマったことメモなど

あっちこっちでpreload問題

こんばんは。 Ectoでは関連を明示的にpreloadすることがよくあります。例えばUserがPostを複数持っていて、それをUserControllerのshowアクションでこんなjsonで返したいとき、 { "user": { "name": "joe_noh", "posts": [ {"title": "...", body: "..."}, {…

Ecto.Changeset.change/2 知らなかった

Ectoのmany_to_manyのドキュメントを読んでいたら、使用例の中でEcto.Changeset.change/2という関数が使われていました。 構造体からchangesetをつくってくれる関数なようです。知らなかった。struct入れてもchangeset入れてもいいみたい。キャストやバリデ…

validate_confirmation/3 という存在を思い出した

一通り実装してから、Ecto.Changeset.validate_confirmation/3があったことを思い出してしまった。 model |> cast(...) |> validate_confirmation(:password) ってすると、passwordとpassword_confirmationの値が一致してるかチェックしてくれる。

Ecto 2.0.0-betaを試す (3)

今回はEcto.Multiです。 なにそれ Ecto.Multiとはそもそも何かというと、1つのトランザクション内で行われるべき複数のRepo操作をまとめるデータ構造です。DBを操作する前にどのような変更がなされるのか覗き見することができます。これの導入に伴い、before…

Ecto 2.0.0-betaを試す (2)

第2弾です。 今回はリレーションです。以前からあるhas_one, has_manyを復習し、新たに入ったmany_to_manyを試してみます。 TL;DR これ書いてる時点のコードはこちら。 github.com has_one User has_one Profile を作っていきます。Userは前回つくったので割…

Ecto 2.0.0-betaを試す (1)

はい。 Ectoはしばらく触っていなかったのですが、v2.0がもうすぐということで触ってみました第1弾。 まずはプロジェクトをセットアップして単純なinsertのテストを通すところまで。 TL;DR こちらに今日時点のコードがあるので、細かいとこは飛ばしていきま…

Ectoで複数のRepoを使う

なにがしたい 例えば、レガシーなシステムを徐々にモダンにしていきたいので、古いDBと新しいDBを 共存させたいとします。要は、異なる接続先の2つ3つのDBを使いたい。 どうする Repoを2つ作ります。 以下、Phoenixのディレクトリ構成に合わせて説明します。…

テーマはFB matteをベースにしてます。作者さんに感謝を込めて。