我有一个 upsert 要求,所以我需要调用 postgres 存储过程或使用公用表表达式。我还使用 pgcrypto 扩展名作为密码,并希望使用 postgres 函数(例如“crypt”来编码/解码密码)。
但是我找不到让 Ecto 部分或全部使用原始 sql 的方法,是否打算让 ecto 仅支持 elixir dsl 而不允许在 dsl 不够时使用原始 sql?
我发现我可以通过适配器查询(火箭是应用程序的名称)
q = Ecto.Adapters.Postgres.query(Rocket.Repo,"select * from users limit 1",[])
但不确定如何将其应用于模型。我是 elixir 的新手,看来我应该能够使用 Ecto.Model.Schem。架构/3 但这失败了
Rocket.User.__schema__(:load,q.rows |> List.first,0)
** (FunctionClauseError) no function clause matching in Rocket.User.__schema__/3