উত্তর:
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)
?