Ecto assoc_constraint不起作用

时间:2016-06-20 06:05:38

标签: elixir phoenix-framework ecto

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

1 个答案:

答案 0 :(得分:2)

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