gpt4 book ai didi

functional-programming - Ecto.Repo 接收到一个没有实现访问行为的结构

转载 作者:行者123 更新时间:2023-12-04 08:41:49 25 4
gpt4 key购买 nike

我的一个 Ecto Repo 和架构有问题
测试 .架构如下:

defmodule Elixirserver.Transactions.Bank do
@behaviour Elixirserver.ContentDump

use Ecto.Schema
import Ecto.Changeset
alias Elixirserver.Transactions.Account

@attrs [:name, :code]

schema "banks" do
field(:name, :string)
field(:code, :string)
has_many(:account, Account)
timestamps()
end

@doc false
def changeset(bank, attrs \\ []) do
bank
|> cast(attrs, @attrs)
|> validate_required(@attrs)
end

def to_json(bank) do
%{
id: bank.id,
name: bank.name,
code: bank.code,
type: "BANK"
}
end
end

当我尝试执行测试时,我得到以下信息:
(UndefinedFunctionError) function 
Elixirserver.Transactions.Bank.fetch/2 is undefined
(Elixirserver.Transactions.Bank does not implement the Access behaviour)

测试是这样的:
def create(conn, %{"bank" => bank_params}) do
with {:ok, %Bank{} = bank} <- Transactions.create_bank(bank_params) do
conn
|> put_status(:created)
|> put_resp_header("location", bank_path(conn, :show, bank))
|> render("show.json", id: bank["id"])
end
end

现在,显然这是因为没有实现访问行为。我必须明确提供吗?

我正在使用 ExMachina 生成夹具,我使用 mix phx.gen.json 生成资源.

最佳答案

bank["id"]很可能是问题所在。结构不实现访问接口(interface),您应该使用点,这样应该可以工作:bank.id .

详情可查看here .

关于functional-programming - Ecto.Repo 接收到一个没有实现访问行为的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com