Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 外部关系,不插入外键ID_Elixir_Phoenix Framework_Ecto - Fatal编程技术网

Elixir 外部关系,不插入外键ID

Elixir 外部关系,不插入外键ID,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,副食品, 我正在学习EXTO,我正在尝试将关联的记录插入到另一个表中。这有点正常,因为正在插入记录,但外键字段为空 代码: 变更集的检查 %Ecto.Changeset{action: nil, changes: %{name: "Kategory 1"}, constraints: [], errors: [], filters: %{}, model: %{__meta__: #Ecto.Schema.Metadata<:built>, __struct__: Hangman

副食品, 我正在学习EXTO,我正在尝试将关联的记录插入到另一个表中。这有点正常,因为正在插入记录,但外键字段为空

代码:

变更集的检查

%Ecto.Changeset{action: nil, changes: %{name: "Kategory 1"}, constraints: [],
 errors: [], filters: %{},
 model: %{__meta__: #Ecto.Schema.Metadata<:built>, __struct__: Hangman.Category,

   id: nil, inserted_at: nil, master_cat_id: 1,
   mastercat: #Ecto.Association.NotLoaded<association :mastercat is not loaded>,

   mastercat_id: nil, name: nil, updated_at: nil,
   words: #Ecto.Association.NotLoaded<association :words is not loaded>},
 optional: [], opts: [], params: %{"name" => "Kategory 1"}, repo: nil,
 required: [:name],
 types: %{id: :id, inserted_at: Ecto.DateTime, mastercat_id: :id, name: :string,

   updated_at: Ecto.DateTime,
   words: {:assoc,
    %Ecto.Association.Has{cardinality: :many, defaults: [], field: :words,
     on_cast: :changeset, on_delete: :nothing, on_replace: :raise,
     owner: Hangman.Category, owner_key: :id, queryable: Hangman.Word,
     related: Hangman.Word, related_key: :category_id}}}, valid?: true,
 validations: []}
%exto.Changeset{action:nil,changes:%{name:“Kategory 1”},约束:[],
错误:[],筛选器:%{},
模型:%{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,
id:nil,插入地址:nil,主目录id:1,

mastercat:#异位关联.未加载

外键是通过(故意未记录的)
异位关联
模块中的
Association\u key/2
函数从模块名称推断出来的:

iex(1)> Ecto.Association.association_key(User, :id)
:user_id
iex(3)> Ecto.Association.association_key(FooBar, :id)           
:foo_bar_id
iex(5)> Ecto.Association.association_key(MasterCat, :id)
:master_cat_id
将架构更改为使用显式外键字段名:

   schema "categories" do
    field :name, :string

    has_many :words, Hangman.Word
    belongs_to :mastercat, Hangman.MasterCat, foreign_key: :master_cat_id

    timestamps
  end

经过一点修补,它成功了!非常感谢。另外,请不要使用“changeset.valid?”,使用
case Repo.insert(…)对结果进行
和模式匹配。@JoséValim非常感谢您提供的提示
   schema "categories" do
    field :name, :string

    has_many :words, Hangman.Word
    belongs_to :mastercat, Hangman.MasterCat, foreign_key: :master_cat_id

    timestamps
  end