gpt4 book ai didi

erlang - 缺少模型之间的 ecto 关联

转载 作者:行者123 更新时间:2023-12-04 17:44:49 28 4
gpt4 key购买 nike

我正在关注 Chris McCord 的“Programming Phoenix”一书,在第 6 章中,在 User 之间创建了一个关系。和一个 Video .

尝试使用 mix phoenix.server 运行它时,出现以下错误:

Request: GET /manage/videos
** (exit) an exception was raised:
** (ArgumentError) schema Rumbl.User does not have association :videos
(ecto) lib/ecto/association.ex:121: Ecto.Association.association_from_schema!/2

翻阅这本书的勘误表,另一位用户评论说这是因为登录用户没有任何与他们相关的视频。

以下是 user.ex的内容
defmodule Rumbl.User do
use Rumbl.Web, :model

schema "users" do
field :name, :string
field :username, :string
field :password, :string, virtual: true
field :password_hash, :string

timestamps
end

def changeset(user, params \\ :empty) do
user
|> cast(params, ~w(name username), [])
|> validate_length(:username, min: 1, max: 20)
end

def registration_changeset(user, params) do
user
|> changeset(params)
|> cast(params, ~w(password), [])
|> validate_length(:password, min: 6, max: 100)
|> put_pass_hash()
end

def put_pass_hash(changeset) do
case changeset do
%Ecto.Changeset{valid?: true, changes: %{password: pass}} ->
put_change(changeset, :password_hash, Comeonin.Bcrypt.hashpwsalt(pass))
_-> changeset
end
end
end

我该如何优雅地处理这种情况?

最佳答案

您忘记添加 has_many :videos, Rumbl.Videoschema "users"web/models/user.ex :

schema "users" do
# ...
has_many :videos, Rumbl.Video
# ...
end

如第 6 章(p1_0 PDF 的第 100 页)和 this snippet 中所述.

关于erlang - 缺少模型之间的 ecto 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38770225/

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