나는, 나는 이런 식으로 그들에게 두 가지 모델 사용자 및 주소와 임베디드 연결을 연결 한 :체외 필터 빈 기록
defmodule App.Address do
# ...
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:address, :city])
end
end
내가 사용하는 경우 :
inputs_for :addresses, [append: [App.Address{}]], fn address ->
text_input address, :address, class: ""
end
나는 빈 데이터를 입력, 그것은 nil로 저장됩니다. 빈 데이터를 걸러 내고 저장하지 못하도록하는 솔루션을 기대하고 있습니다. 내가 생각한대로 Controller에서 Enum.filter를 사용하고 있습니다.
모델 유효성 검사 또는 컨트롤러에서 더 깨끗한 방법을 사용하면 더 깨끗한 방법이 있습니까?
[cast_embed/3] (https://hexdocs.pm/ecto/Ecto.Changeset.html#cast_embed/3) 함수는 레일스 [accepts_nested_attributes_for]와 유사한 방식으로': reject_if'와 같은 옵션을 하나 더 받아 들여야한다고 생각합니다 (http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html). [필자는 elixir-ecto 메일 링리스트에 질문을 올렸습니다.] (https://groups.google.com/forum/#!topic/elixir-ecto/ScPo16tfllc) –
@OleksandrAvoyants 이는': with' 옵션의 요점입니다 . 유효하지 않은 경우이를 거부 할 수있는 변경 집합을 지정합니다. –
@JustinWood 내가 틀렸다면 나를 바로 잡으십시오. 그러나 저는 현재 changeset가 레코드를 거부 할 방법이 없다고 생각합니다. –