Ecto documentationには補間値の計算方法が示されています。しかし、私はクエリに動的なフィールドが必要です。私は数十のフィールドを持っていて、それらのそれぞれに対してクエリを書くことは密着していないようです。自動翻訳Ectoの内挿フィールドはどのようにしてクエリしますか?
** (Ecto.QueryError) web/controllers/search.ex:8: field `Hedone.User.campo` in `where` does not exist in the schema in query:
from u in Hedone.User,
where: u.campo > ^18 and u.campo < ^40,
select: u.name
:
defmodule Hedone.SearchController do
use Hedone.Web, :controller
alias Hedone.User
def idade(conn, %{"idade+" => maior, "idade-" => menor, "campo" => campo}) do
IO.inspect campo
query = from u in User, where: u.campo > ^maior and u.campo < ^menor, select: u.name
pesquisa = Repo.all query
IO.inspect pesquisa
text conn, "Works"
end
end
このコントローラは、次のエラーが発生します。
ダイナミックfields_の_dozensのために私はむしろマクロとなるだろう。 – mudasobwa
申し訳ありませんが、私はプログラムに着手しており、私のアイデアをオンラインにすることを楽しみにしています。私はマクロセッションを読んでいない。なぜそれが良いのでしょうか?それはとてもうまくいく。 –
@mudasobwaここでどのようにマクロを使用しますか?少し拡大できますか?私はここでそれをする理由は考えられませんが、多分私は何かを逃しています。 – Dogbert