wrapper and query generator for Elixir. Ecto provides a standardized API and a set of abstractions for talking to all the different kinds of databases, so that Elixir developers can query whatever database they’re using by employing similar constructs. データベースラッパー クエリジェネレーター 標準化されたAPIと、あらゆる種類のデータベースと対話するための抽象化されたセットを提供 使用しているデータベースに対して同様の構造を用いて問い合わせを行うことができる [1] 1. https://hexdocs.pm/ecto/getting-started.html#content
is the advantage of Ecto over Rails ORM? # other language user = User.find(1) user.confirm() # Ecto iex> user = Repo.get(User, 1) iex> UserRegister.confirm_user(user)
when manipulating structs. Changesetでデータのフィルタリング、キャスト(変換)、バリデーション、制約の定義が行える a set of change:一連の変更 をまとめたもの と捉えるといいかも 個人的には: Ectoを使った実装をする上で超重要 [1] [2] 1. https://hexdocs.pm/ecto/Ecto.Changeset.html 2. https://stackoverflow.com/a/33186341
という流れをイメージできると良さそう def changeset_for_insert(some_data, attrs) do # insert時のcast, validationを記述 end def changeset_for_update(some_data, attrs) do # update時のcast, validationを記述 end
p in Post, on: c.post_id == p.id) |> select([c, p], {p.title, c.text}) SELECT p1."title", c0."text" FROM "comments" AS c0 INNER JOIN "posts" AS p1 ON c0."post_id" = p1."id" []