我有一个Review
模型,该模式具有belongs_to
User
符号。
每次审核都应属于用户,因此user_id
列是必填项。
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
|> a lot of things like validate_length
|> assoc_constraint(:user)
end
这是我的迁移:
defmodule MyReelty.Repo.Migrations.AddUserIdToReviews do
use Ecto.Migration
def change do
alter table(:reviews) do
add :user_id, references(:users, on_delete: :nothing)
end
create index(:reviews, [:user_id])
end
end
不幸的是,当我正在运行时
%Review{} |> Review.changeset(@valid_params) |> Repo.insert!
评论已保存!我仔细检查了详细信息中没有user_id
或其他用户相关信息。
顺便说一下,我检查了validate_number
之类的其他内容!
为什么assoc_constraint
在这种情况下不起作用?
答案 0 :(得分:2)
您必须将user_id
添加到@required_fields
,就是