priceFloat = price/1
을 수행하여 float로 변환하기 전에이 함수에서 "price"변수가 0인지 또는 nil인지 확인해야합니다. 그렇지 않으면 산술 오류가 발생합니다.Elixir 보장 값이 0 또는 0이 아닌지 확인
def insert_product_shop(conn, product_id, shop_id, price) do
IO.inspect(price, label: "price")
priceFloat = price/1
changeset = Api.ProductShop.changeset(%Api.ProductShop{p_id: product_id, s_id: shop_id, not_in_shop_count: 0, price: priceFloat})
errors = changeset.errors
valid = changeset.valid?
case insert(changeset) do
{:ok, product_shop} ->
{:ok, product_shop}
{:error, changeset} ->
{:error, :failure}
end
end
이렇게하는 관용적 인 방법은 무엇입니까?
나는이 시도하지만, 난 여전히 산술 오류가 발생합니다 :def insert_product_shop(conn, product_id, shop_id, price) do
IO.inspect(price, label: "price")
case {price} do
{price} when price > 0 ->
priceFloat = price/1
changeset = Api.ProductShop.changeset(%Api.ProductShop{p_id: product_id, s_id: shop_id, not_in_shop_count: 0, price: priceFloat})
errors = changeset.errors
valid = changeset.valid?
case insert(changeset) do
{:ok, product_shop} ->
{:ok, product_shop}
{:error, changeset} ->
{:error, :failure}
end
end
end
완벽하게 작동합니다. 감사. – BeniaminoBaggins