연결에서 현재 사용자 할당을 사용하여 다 대다 관계를 만들려고합니다. 문제는 모델에서 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
최신 정보
Steve의 제안으로 끝났습니다. 사용자 ID에 대한 가상 필드를 스키마에 추가하고이 기능을 변경 집합 파이프 라인에 추가했습니다.
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
현재 user_id를 params에 추가하고 그렇게 처리하지 않는 이유는 무엇입니까? 새 / 업데이트가 웹 양식에서 오는 경우 템플릿에서 current_user를 가져오고 숨겨진 입력을 추가하기 쉽습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다