我試圖更新我的數據庫中的現有記錄Repo.update:如何使用來實現to_query(數據)花好月圓結構
def subscribe_email(conn, %{"email-address"=>email_address, "shop"=>shop}) do
current_record = Repo.all(%Oauth.EmailAddress{email_address: email_address, active: false, shop: shop, verified: :true})
current_record = Ecto.Changeset.change(current_record, active: :true)
case Repo.update current_record do
{:ok, struct} -> IO.puts "updated correctly."
{:error, changeset} -> IO.puts "did not update"
end
end
我有%Oauth.EmailAddress模型:
defmodule Oauth.EmailAddress do
use Ecto.Model
schema "email_address" do
field :email_address, :string
field :active, :boolean
field :shop, :string
field :verified, :boolean
timestamps
end
end
當我打subscribe_email(),將引發一個異常:
** (Protocol.UndefinedError) protocol Ecto.Queryable not implemented for %Oauth.EmailAddress
我知道,我需要實現從Ecto.Q to_query() ueryable。但是,我不知道如何來做到這一點。我不熟悉Elixir中的Protocols,儘管我已閱讀官方文檔,但我沒有使用Protocols。請解釋如何爲我的結構實現to_query()。
道歉,這應該是一個評論,而不是答案 – Kip