নতুন নতুন বনাম তৈরিগুলি ails


195

কেন RESTful কন্ট্রোলারে একটি নতুন পদ্ধতি সংজ্ঞায়িত করার দরকার আছে, এটি একটি তৈরি পদ্ধতি দিয়ে অনুসরণ করুন?

গুগল অনুসন্ধান আমাকে যে উত্তরটি খুঁজছিল তা সরবরাহ করে নি। আমি পার্থক্যটি বুঝতে পারি, তবে তারা কেন সেভাবে ব্যবহার করছে তা জানতে হবে।

উত্তর:


263

রিলে'র মধ্যে আরইএসটি বাস্তবায়ন নতুন এবং তৈরি আলাদাভাবে চিকিত্সা করা হয়।

একটি এইচটিটিপি জিইটি-র /resources/newউদ্দেশ্য একটি নতুন সংস্থান তৈরির জন্য উপযুক্ত একটি ফর্ম রেন্ডার করার উদ্দেশ্যে করা হয়েছে যা এটি নিয়ামকের মধ্যে নতুন ক্রিয়াকলাপকে কল করে যা একটি নতুন সংরক্ষণে রেকর্ড তৈরি করে এবং ফর্মটি রেন্ডার করে।

একটি HTTP পোষ্ট নতুন ক্রিয়াকলাপের /resourcesঅংশ হিসাবে তৈরি করা রেকর্ড গ্রহণ করে এবং এটি নিয়ন্ত্রণকারীর মধ্যে তৈরি ক্রিয়ায় প্রেরণ করে যা এরপরে এটি ডাটাবেসে সংরক্ষণের চেষ্টা করে।


1
আমি রেলস টিউটোরিয়াল সাইটে ঠিক এই তথ্যটি স্কিমেড করেছি। আমি এটি ব্যবহার না করা অবধি এটি প্রাসঙ্গিক হয়ে ওঠে।
স্টোরিমাস্টারকিউ

248

থেকে ActiveRecord :: বেজ ডকুমেন্টেশন:

create (ਗੁਣ = শূন্য) {| অবজেক্ট | ...}

বৈধতা পাস হলে একটি বস্তু (বা একাধিক বস্তু) তৈরি করে এবং এটি ডাটাবেসে সংরক্ষণ করে। ডাটাবেসটিতে বস্তুটি সাফল্যের সাথে সংরক্ষণ করা হয়েছিল কিনা তার ফলস্বরূপ অবজেক্টটি ফিরে আসে।

new (গুণাবলী = শূন্য) self | স্ব যদি block_given? | ...}

নতুন অবজেক্টগুলি খালি (কোনও নির্মাণ প্যারামিটার পাস না) বা বৈশিষ্ট্য সহ প্রাক-সেট হিসাবে ইনস্ট্যান্ট করা যেতে পারে তবে এখনও সংরক্ষিত হয়নি (সম্পর্কিত টেবিলের কলামের নামের সাথে মেলে কীগুলির সাথে একটি হ্যাশ পাস করুন)। উভয় ক্ষেত্রেই, বৈধ বৈশিষ্ট্য কীগুলি সম্পর্কিত টেবিলের কলামের নামগুলি দ্বারা নির্ধারিত হয় - সুতরাং আপনার কাছে এমন বৈশিষ্ট্য থাকতে পারে না যা টেবিল কলামগুলির অংশ নয়।

সুতরাং createনতুন অবজেক্টটি ইনস্ট্যান্ট করে, এটিকে বৈধতা দেয় এবং তারপরে এটি ডাটাবেসে সংরক্ষণ করে। এবং newকেবল স্থানীয় অবজেক্ট তৈরি করে তবে এটি ডিবিতে বৈধকরণ বা সংরক্ষণ করার চেষ্টা করে না।


5
এই প্রশ্নটি নিয়ামক পদ্ধতিগুলি সম্পর্কে, মডেল পদ্ধতিগুলি সম্পর্কে নয়।
sevenseacat

8
@ কার্পি - ডাউনভোটের জন্য ধন্যবাদ আপনি একটি ভাল বক্তব্য রেখেছেন, তবে বিবেচনা করুন যে প্রচুর লোক এই উত্তরটি দরকারী বলে মনে করেছে, বিশেষত যেহেতু শিরোনাম বা ট্যাগগুলি এটিকে কেবলমাত্র নিয়ন্ত্রণকারী প্রশ্ন হিসাবে আখ্যায়িত করে না। সুতরাং আমি মনে করি এই উত্তরটি মান প্রদান করে।
জাস্টিন ইথিয়র

16

নতুন একটি নতুন মডেল উদাহরণ ইনস্ট্যান্ট করে, তবে সেভ পদ্ধতিটি না বলা পর্যন্ত এটি সংরক্ষণ করা হয় না।

তৈরি নতুন হিসাবে একই কাজ করে, কিন্তু এটি ডাটাবেসেও সংরক্ষণ করে।

কখনও কখনও আপনি ডাটাবেসে কিছু সংরক্ষণের আগে জিনিসগুলি করতে চান, কখনও কখনও আপনি সরাসরি এটি তৈরি এবং সংরক্ষণ করতে চান।


1
এই প্রশ্নটি নিয়ামক পদ্ধতিগুলি সম্পর্কে, মডেল পদ্ধতিগুলি সম্পর্কে নয়।
sevenseacat

11

রেলগুলির RESTful অংশগুলি এইচটিটিপি প্রোটোকল কীভাবে কাজ করে তার খুব কাছাকাছি তৈরি করা হয়। এইচটিটিপি প্রোটোকলে, একটি জিইটি অনুরোধের কোনও ডেটা পরিবর্তন করার কথা নয়। যৌক্তিকভাবে, আপনি যদি রেলের সমস্ত রেস্টস্টুল ক্রিয়াকলাপের কাজটি দেখে থাকেন তবে সেগুলি HTTP ক্রিয়াগুলির সাথে মিলবে। একটি পোস্ট নতুন ডেটা তৈরির জন্য, তাই এটি যুক্তিযুক্তভাবে তৈরি করা হয়। আপনি তার ফর্ম সংস্করণটি বা অন্য কথায়, নতুন ক্রিয়াটি পরিবেশন করতে একটি জিইটি ব্যবহার করেন। সূচী এবং শোটিও জিইটি, হ'ল আপডেট একটি পুট (বা রেল 4+ এ প্যাচচ), এবং ধ্বংসটি এইচটিটিপি-র একটি মুছে ফেলা হয়।

তদ্ব্যতীত, এটি নিয়ামকটিতে যুক্তিটি সুন্দরভাবে পৃথক করে এবং ত্রুটিগুলি মোকাবেলার জন্য একটি সহজ উপায় দেয় (ত্রুটি বার্তাগুলির সাহায্যে নতুন ক্রিয়াকে পুনরায় উপস্থাপন করে)।


"You use a GET to serve the form version of that or in other words, the new action"উত্তরের জন্য ধন্যবাদ তবে ব্যক্তিগতভাবে আমি এই নামকরণ কনভেনশনটি সত্যিই বিভ্রান্তিকর বলে মনে করি
ড্যানিয়েল লিজিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.