我正尝试在其中一个列是外键的表中插入数据。我已创建表之间的关联,但插入的外键为空。
我有user_type的模式
schema “user_type” do
field(:type, :string)
has_many(:roles, Accreditor.Role.Roles, foreign_key: :user_type)
timestamps()
end
def changeset(user_type, attrs) do
user_type
|> cast(attrs, [:type])
|> validate_required([:type])
|> unique_constraint(:type)
end
并拥有另一个角色架构
schema “roles” do
field(:role_name, :string)
#field(:user_type, :id)
has_many(:permissions, Accreditor.Permissions.RolePermissions,
foreign_key: :role_id)
belongs_to(:user_type, UserType)
timestamps()
end
@doc false
def changeset(roles, attrs) do
roles
|> cast(attrs, [:role_name])
|> validate_required([:role_name])
|> unique_constraint(:role_name)
end
并且我试图将数据插入到roles表中,插入了数据role_name,但外键user_type为空。
请帮帮我
以下是我的postgres表:
select * from user_type;
id | type | inserted_at | updated_at
----±------±--------------------±--------------------
1 | ADMIN | 2019-05-06 09:19:24 | 2019-05-06 09:19:24
这是我的user_type表
select * from roles;
id | role_name | user_type | inserted_at | updated_at
----±----------±----------±--------------------±--------------------
1 | SUPER | | 2019-05-06 09:37:30 | 2019-05-06 09:37:30
而这是我的角色表,其中user_type字段为空。我不明白我哪里出错了。
1条答案
按热度按时间trnvg8h31#
您没有执行任何操作来更新
user_type
,为什么要更新它?使用Ecto.Changeset.cast_assoc/3
插入一个关联,类似于: