如何解决Ecto.build_assoc不关联记录
我有一个简单的用户/电话应用程序,其中每个用户都有很多电话。
模型定义如下:
user.ex
defmodule UserManager.User do
use Ecto.Schema
schema "users" do
field :email,:string
has_many :phones,UserManager.Phone
end
end
phone.ex
defmodule UserManager.Phone do
use Ecto.Schema
schema "phones" do
field :phone_number,:string
field :phone_status,:string,default: "open"
belongs_to :user,UserManager.User
end
end
迁移
create_users.ex
defmodule UserManager.Repo.Migrations.CreateUser do
use Ecto.Migration
def change do
create table(:users) do
add :email,:string
end
end
end
create_phone.ex
defmodule UserManager.Repo.Migrations.CreatePhone do
use Ecto.Migration
def change do
create table(:phones) do
add :phone_number,:string
add :phone_status,:string
end
end
end
phone_belongs_to_user.ex
defmodule UserManager.Repo.Migrations.PhoneBelongsToUser do
use Ecto.Migration
def change do
alter table(:phones) do
add :user_id,references(:users)
end
end
end
在iex上运行代码,如下所示:
alias UserManager.{Repo,User,Phone}
user = %User{email: "john@mail.com"}
Repo.insert!(user)
直到现在一切运行良好...但是当我运行Ecto.build_assoc
时,请不要将手机与用户关联。 为什么? --ps:代码未引发任何异常-
phone = Ecto.build_assoc(user,:phones,%{ phone_number: "052-8888"})
解决方法
缺少的是在完成user = Repo.get(User,1)
之后使用户拥有Repo.insert!(user)
。然后只有Ecto.build_assoc
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。