Elixir MyApp.MyStruct未实现协议枚举
我试图创建一个联接表,但在构建结构时遇到了这个错误 错误 未为%Statcasters实现协议可枚举。UsersLegues{meta:#exto.Schema.Metadata,专员:nil,id:nil,插入地址:nil,联盟:#exto.Association.NotLoaded,联盟id:nil,更新地址:nil,用户:#exto.Association.NotLoaded,用户id:nil}。此协议的实现对象为:DBConnection.PrepareStream、DBConnection.Stream、Date.Range、exto.Adapters.SQL.Stream、File.Stream、Function、GenEvent.Stream、HashDict、HashSet、IO.Stream、List、Map、MapSet、Postgrex.Stream、Range、Stream、Timex.Interval 它在这一行失败了: 联盟管理员:Elixir MyApp.MyStruct未实现协议枚举,elixir,phoenix-framework,Elixir,Phoenix Framework,我试图创建一个联接表,但在构建结构时遇到了这个错误 错误 未为%Statcasters实现协议可枚举。UsersLegues{meta:#exto.Schema.Metadata,专员:nil,id:nil,插入地址:nil,联盟:#exto.Association.NotLoaded,联盟id:nil,更新地址:nil,用户:#exto.Association.NotLoaded,用户id:nil}。此协议的实现对象为:DBConnection.PrepareStream、DBConnecti
我与联盟和用户之间有着密切的关系。联接表是users\u leages表,这就是我在新操作中尝试创建的内容。但是当我尝试加载新页面时。它因这个错误而中断 该错误意味着Ecto试图将字段
用户联盟
的值用作%userslegues{}
不可用的可枚举项。由于该字段是一个has_mun many
字段,一条记录可以有许多字段,并且它需要是%UsersLeagues{}
结构的列表(或者更具体地说是一个可枚举的列表)
您可以通过在列表中包装%UsersLeagues{}
来解决此问题:
changeset = League.changeset(%League{users_leagues: [%UsersLeagues{}]})
该错误意味着,Ecto试图将字段
users\u leagues
的值用作%userslegues{}
不可用的可枚举项。由于该字段是一个has_mun many
字段,一条记录可以有许多字段,并且它需要是%UsersLeagues{}
结构的列表(或者更具体地说是一个可枚举的列表)
您可以通过在列表中包装%UsersLeagues{}
来解决此问题:
changeset = League.changeset(%League{users_leagues: [%UsersLeagues{}]})
尝试将
%UsersLeagues{}
更改为[%UsersLeagues{}]
。效果很好!但我不明白为什么?试着把%UsersLeagues{}
改成[%UsersLeagues{}]
。这很有效!但我不明白为什么?