gpt4 book ai didi

Elixir Ecto - 未知领域

转载 作者:行者123 更新时间:2023-12-01 11:24:01 25 4
gpt4 key购买 nike

尝试复制 trello 示例,无法使变更集与外键一起使用:

移民:

defmodule Final.Repo.Migrations.CreateKw do
use Ecto.Migration

def change do
create table(:kw) do
add :keyo_id, references(:keyo), null: false
add :users_id, references(:users), null: false


timestamps
end
create index(:kw, [:keyo_id])
create index(:kw, [:users_id])
create unique_index(:kw, [:keyo_id, :users_id])
end
end

模型:
defmodule Final.Kw do
use Final.Web, :model

alias Final.Repo


schema "kw" do
belongs_to :keyo, Final.Keyo
belongs_to :user, Final.User

timestamps
end

@required_fields ~w(keyo_id users_id)
@optional_fields ~w()

def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
end

end

完整错误:

** (ArgumentError) unknown field users_id (note only fields, embeds, belongs_to, has_one and has_many associations are supported in changesets)



导致它的命令:
changeset = Final.Kw.changeset(%Final.Kw{}, %{keyo_id: 1, users_id: 2})

我的代码与示例中的代码几乎相同,我尝试了所有可能的组合但无法使其工作,我错过了什么?

最佳答案

问题是Ecto默认自动定义的外键是模型名+“_id”,这里是user_id ,而您在其他地方使用的 key 是 users_id .您可以通过更改来覆盖它:

belongs_to :user, Final.User

到:
belongs_to :user, Final.User, foreign_key: :users_id

(或者,如果可能,您可以在任何地方将 :users_id 更改为 :user_id,因为它被认为更惯用。)

关于Elixir Ecto - 未知领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39276214/

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