উত্তর:
pluckডিবি স্তরে রয়েছে। এটি কেবলমাত্র নির্দিষ্ট ক্ষেত্রটিকেই জিজ্ঞাসা করবে। এই দেখুন ।
যখন তুমি কর:
User.first.gifts.collect(&:id)
আপনার সমস্ত ক্ষেত্রের সাথে বস্তুগুলি লোড হয়েছে এবং আপনি কেবল এটি পান id পরিগণিতের উপর ভিত্তি করে পদ্ধতিটির জন্য ধন্যবাদ পাবেন get
তাই:
আপনার যদি কেবলid 4 রেলগুলির দরকার হয় তবে ব্যবহার করুন ids:User.first.gifts.ids
আপনার যদি কেবল রেল 4 সহ কিছু ক্ষেত্রের প্রয়োজন হয় তবে ব্যবহার করুন pluck:User.first.gifts.pluck(:id, :name, ...)
আপনার কেবলমাত্র 3 টি রেল সহ একটি ক্ষেত্রের প্রয়োজন হলে , ব্যবহার করুন pluck:User.first.gifts.pluck(:id)
আপনার যদি সমস্ত ক্ষেত্রের প্রয়োজন হয় তবে ব্যবহার করুনcollect
আপনার যদি রেল 4 সহ কিছু ক্ষেত্রের প্রয়োজন হয় তবে এখনও ব্যবহার করুন pluck
আপনার যদি রেল 3 সহ কিছু ক্ষেত্রের প্রয়োজন হয়, selectএবং ব্যবহার করুনcollect
pluckএকাধিক ক্ষেত্রগুলিকে রইল সমর্থন করে , 3 টি ব্যর্থ হয় না, যদি না আপনি রায়ান
id, .idsরেফ ডকটি ব্যবহার করুন : api.rubyonrails.org/classes/ActtiveRecord/…
হ্যাঁ. পাগল নির্দেশিকা অনুযায়ী , pluckসরাসরি একটি মধ্যে একটি ডাটাবেস ফলাফলের পরিবর্তন করে arrayনির্মাণের ছাড়াইActiveRecord বস্তু। এর অর্থ একটি বৃহত বা প্রায়শই চলমান ক্যোয়ারির জন্য আরও ভাল পারফরম্যান্স।
@ অ্যাপনেডাইভিংয়ের উত্তর ছাড়াও, pluckএকক এবং একাধিক কলামের নাম উভয়ই যুক্তি হিসাবে নিতে পারে:
Client.pluck(:id, :name)
# SELECT clients.id, clients.name FROM clients
# => [[1, 'David'], [2, 'Jeremy'], [3, 'Jose']]
আপনি যদি পুনরুদ্ধারকৃত রেকর্ডের কয়েকটি অ্যাট্রিবিউট ব্যবহার করছেন এমন কোনও ক্ষেত্রে যদি থাকে। এই ক্ষেত্রে আপনার ব্যবহার করা উচিত pluck।
User.collect(&:email)
উপরের উদাহরণে আপনার যদি স্মৃতি এবং সময় নষ্ট না করে কেবল ইমেল বৈশিষ্ট্যের প্রয়োজন হয়। কারণ এটি ডাটাবেসে ব্যবহারকারী সারণী থেকে সমস্ত কলাম পুনরুদ্ধার করবে, প্রতিটি বৈশিষ্ট্যের জন্য মেমরি বরাদ্দ করে (যে বৈশিষ্ট্যগুলি আপনি কখনই ব্যবহার করবেন না)
দ্রষ্টব্য: pluckব্যবহারকারীর অ্যাক্টিভেকর্ড_ সম্পর্কিতটি ফেরত দেয় না
pluckএকাধিক বৈশিষ্ট্য যেমন ব্যবহার করতে পারবেন নাpluck(:id, :name)?