0
我是Phoenix/Elixir的全新品牌,並且在使用belongs_to協會保存模型時遇到了一些問題。在菲尼克斯保存所屬協會
該設置是我有一個用戶模型belongs_to JobTitle模型。在數據庫中,用戶有一個job_title_id字段。我正在使用JSONAPI輸入更新用戶,並嘗試將job_title_id從1更改爲2.用戶確實更新正確,除了job_title_id沒有更新。我已經檢查過,控制器中的attrs變量確實包含job_title_id的正確值,但它並沒有被保存到數據庫中。我在這裏錯過了很明顯的東西嗎我正在使用JAserializer插件。
非常感謝
defmodule PhoenixSandbox.User do
use PhoenixSandbox.Web, :model
schema "users" do
field :name, :string
belongs_to :job_title, PhoenixSandbox.JobTitle
end
@required_fields ~w(name email bio)
@optional_fields ~w()
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
end
end
控制器代碼:在控制器中的attrs變量
def update(conn, %{"id" => id, "data" => data}) do
user = Repo.get!(User, id)
|> Repo.preload(:job_title)
attrs = JaSerializer.Params.to_attributes(data)
changeset = User.changeset(user, attrs)
case Repo.update(changeset) do
{:ok, user} ->
conn
|> put_status(201)
|> render(:show, data: user)
{:error, changeset} ->
conn
|> put_status(422)
|> render(:errors, data: changeset)
end
end
詳情: