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
,就是这样
我有一个 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
,就是这样