Copy & Paste Engineer

【Elixir】DB検索時などの際に動的に列を指定する方法

【Elixir】DB検索時などの際に動的に列を指定する方法

Elixir DBの検索を行う際など汎用的に列を変数化したりして検索したい時があります。その実装方法のメモです。

実装

Ecto.Query.APIfiled/2 の関数を使用します。 Ecto.Query.API — Ecto v3.9.4 #field/2 この関数は指定されたテーブルの列をAtom型で渡すと、その列を使用してくれます。

import Ecto.Query
def search_by_column(table, column, value) do
  query = from(t in table,
    where: field(t, ^column) == ^value
  )
  Repo.all(query)
end

search_by_column(User, :name, "Alice")

参考