এটি "আমি কীভাবে এটি করতে হয় তা জানি না" "প্রশ্নটির চেয়ে এটি" কেন বিষয়গুলি এভাবে কাজ করে "প্রশ্নটি আরও ...
সুতরাং সম্পর্কিত রেকর্ডগুলি যে আপনি জানেন যে আপনি ব্যবহার করতে যাচ্ছেন তা টানতে দেওয়া সুসমাচারটি হ'ল ব্যবহার করা :include
কারণ আপনি একটি যোগদান পেয়ে যাবেন এবং অতিরিক্ত অনুসন্ধানের পুরো গুচ্ছটি এড়িয়ে যাবেন:
Post.all(:include => :comments)
তবে আপনি যখন লগগুলিতে লক্ষ্য করেন, সেখানে কোনও যোগসূত্র হয় না:
Post Load (3.7ms) SELECT * FROM "posts"
Comment Load (0.2ms) SELECT "comments.*" FROM "comments"
WHERE ("comments".post_id IN (1,2,3,4))
ORDER BY created_at asc)
এটা তোলে হয় একটি শর্টকাট গ্রহণ করা হয়েছে কারণ এটি একবারে মন্তব্য সব pulls, কিন্তু এটি এখনও একটি যোগদানের নয় (যা কি সব ডকুমেন্টেশন বলে মনে হয়)। আমি যোগদানের একমাত্র উপায় হ'ল :joins
পরিবর্তে ব্যবহার করা :include
:
Post.all(:joins => :comments)
এবং লগগুলি দেখায়:
Post Load (6.0ms) SELECT "posts".* FROM "posts"
INNER JOIN "comments" ON "posts".id = "comments".post_id
আমি কিছু অনুপস্থিত করছি? আমার অর্ধ ডজন সমিতি সহ একটি অ্যাপ্লিকেশন রয়েছে এবং এক স্ক্রিনে আমি এগুলির সমস্ত থেকে ডেটা প্রদর্শন করি। দেখে মনে হচ্ছে 6 জন ব্যক্তির পরিবর্তে একটি যুক্ত-এড কোয়েরি রাখা ভাল be আমি জানি যে পারফরম্যান্স-ভিত্তিতে পৃথক প্রশ্নের পরিবর্তে যোগদান করা ভাল নয় (আসলে আপনি যদি সময় ব্যয় করে যাচ্ছেন তবে দেখে মনে হচ্ছে উপরোক্ত দুটি পৃথক প্রশ্নগুলি যোগ দেওয়ার চেয়ে দ্রুত) তবে সমস্ত দস্তাবেজের পরে আমি পড়ছি আমি :include
বিজ্ঞাপন হিসাবে কাজ না করে দেখে অবাক ।
হয়তো পাগল হয় কার্য-সম্পাদনার সমস্যা জ্ঞাত এবং নির্দিষ্ট ক্ষেত্রে ব্যতীত যোগদানের না?
includes