我正嘗試使用連接中的當前用戶分配創建多對多關係。問題是我無法訪問模型中的conn。我試着將它與變更集一起傳遞,但這似乎並不是正確的做法。使用Phoenix Framework在模型中獲得conn?
處理這個問題的最佳方法是什麼?我想我可以將conn導入模型。我有什麼理由不想這樣做?
這裏是我的變更看起來像現在
def changeset(model, user, params \\ :invalid) do
model
|> cast(params, @required_fields)
|> put_assoc(:users, [user])
|> validate_required([:name])
|> unique_constraint(:name)
end
UPDATE
結束了與史蒂夫的建議下去。爲用戶標識添加了一個虛擬字段到架構,並將此功能添加到變更管道
def changeset(model, params \\ :invalid) do
model
|> cast(params, @required_fields)
|> associate_current_user(params)
|> validate_required([:name])
|> unique_constraint(:name)
end
def associate_current_user(model, params) do
case params do
%{"user_id" => id} ->
user = Repo.get!(User, id)
model
|> put_assoc(:users, [user])
_ ->
model
end
end
但是現在每個人都可以改變表單中的id,或者我失去了一些東西? – JustMichael
是的,這是一個很好的觀點。更好的想法是將其添加到控制器中的參數。 –