キャストエクト警告
警告するとき、私はこの警告を得る:鋳造キャスト/ 4で埋め込みが廃止されて、 を使用してください、私はモデルの組織
を持って 代わり
を/ 3をcast_embed
defmodule Bonsai.Organization do
use Bonsai.Web, :model
alias Bonsai.OrganizationSettings
schema "organizations" do
field :name, :string
field :currency, :string
field :tenant, :string
field :info, :map, default: %{}
embeds_one :settings, OrganizationSettings, on_replace: :delete
timestamps
end
@required_fields ~w(name currency tenant)
@optional_fields ~w(info settings)
@doc """
"""
def changeset(model, params \\ %{}) do
cast(model, params, @required_fields, @optional_fields)
|> cast_embed(:settings)
|> put_embed(:settings, OrganizationSettings.changeset(%OrganizationSettings{}, params[:settings] || %{}))
|> change(%{info: params[:info] || %{}})
end
end
そして、私の埋め込まれたモデルOrganizationSettings
defmodule Bonsai.OrganizationSettings do
use Ecto.Model
#use Ecto.Changeset
@primary_key {:id, :binary_id, autogenerate: true}
#schema "" do
embedded_schema do
field :show_search_on_focus, :boolean, default: true
field :theme, :string, default: "bonsai"
end
def changeset(model, params \\ %{}) do
model
|> cast(params, [:theme], [:show_search_on_focus])
|> validate_inclusion(:theme, ["bonsai", "dark"])
end
end
私は多くの方法を試してみましたが、私は
私はvalidate_requiredを使用しようとしましたが、Ecto 2でしか利用できませんでした。多分私は今ベータ版を使うべきです。 –
助けてくれてありがとう、私はより完全な答えを作りましたが、あなたのガイドは本当に各ステップを解決するのに役立ちます –