upsert 要件があるため、postgres ストアド プロシージャを呼び出すか、共通テーブル式を使用する必要があります。また、パスワードに pgcrypto exgtension を使用しており、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 を使用できるはずです。schema /3 しかし、これは失敗します
Rocket.User.__schema__(:load,q.rows |> List.first,0)
** (FunctionClauseError) no function clause matching in Rocket.User.__schema__/3