Ecto assoc_constraint 不起作用

Ecto assoc_constraint doesn't work

我有一个 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 在这种情况下不起作用?

您必须将 user_id 添加到 @required_fields,就是这样