با درود خدمت دوستان محترم .
در آموزشی که برای به روز رسانی مثلا یک مطلب در دیتابیس دیده بودم . طرف اومده بود کل اطلاعات رو در فرم فراخوانی کرد و بعد اومد به صورت زیر ارسال کرد :
مثلا :
def edit_user(id, map_params) do
get_user_by_id(id)
|> UsersInfo.changeset(map_params)
|> Repo.update
end
در این صورت به سادگی تمام به روز رسانی می رفت توی changeset
و بعد اگر ولید بود که ادامه کار نبود ارور برگشت می خورد . ولی من به این صورت نیاز ندارم .
من می خوام یک الی دو فیلد از این رکورد مثلا پسورد مثلا نام کاربر رو تغییر بدم ولی می خوام این یک تغییر از changeset من بگذره و شرط هایی که مربوط به اون هست رو هم طی کنه ولی به صورت زیر پیشنهاد داده شده به کاربر در داکیومنت ecto
post = MyRepo.get!(Post, 42)
post = Ecto.Changeset.change post, title: "New title"
case MyRepo.update post do
{:ok, struct} -> # Updated with success
{:error, changeset} -> # Something went wrong
end
https://hexdocs.pm/ecto/Ecto.Repo.html#c:update/2
در اینجا همیشه بخاطر این تابع Ecto.Changeset.change
ولید هست و هیچ یک از شرط های changeset من چک نمی شه .
در این زمینه چه راه حلی دارید ؟ که فقط تعداد رکورد هایی که به وسیله کاربر به روز می شوند شرط های ولیدیشن اون ها چک بشه و در دیتابیس بره ؟
با تشکر