উভয় টেবিলের জন্য একটি একক জিজ্ঞাসা রাখতে আপনি সরাসরি এসকিউএল করতে পারেন। আমি আশা করি যে লোকেরা সরাসরি স্ট্রিংয়ের মধ্যে ভেরিয়েবল স্থাপন করা থেকে বিরত রাখবে (এসকিউএল ইঞ্জেকশন বিপদ), যদিও এই উদাহরণটির প্রয়োজনটি নির্দিষ্ট করে নি:
@results = []
ActiveRecord::Base.connection.select_all(
ActiveRecord::Base.send(:sanitize_sql_array,
["... your SQL query goes here and ?, ?, ? are replaced...;", a, b, c])
).each do |record|
# instead of an array of hashes, you could put in a custom object with attributes
@results << {col_a_name: record["col_a_name"], col_b_name: record["col_b_name"], ...}
end
সম্পাদনা : হুই যেমন বলেছেন, একটি সহজ উপায় ActiveRecord::Base.connection.execute("...")
। আরেকটি উপায় ActiveRecord::Base.connection.exec_query('...').rows
। এবং আপনি দেশীয় প্রস্তুত বিবৃতি ব্যবহার করতে পারেন, যেমন পোস্টগ্রাগ ব্যবহার করে, কাঁচা_ সংযোগ দিয়ে প্রস্তুত বিবৃতি তৈরি করা যেতে পারে, https://stackoverflow.com/a/13806512/178651 তে বর্ণিত হিসাবে এক্সিকিউটিরিপ্রেড
আপনি অ্যাক্টিভেকর্ড রিলেশনাল কোয়েরিতে কাঁচা এসকিউএল টুকরোও রাখতে পারেন: http://guides.rubyonrails.org/active_record_querying.html
এবং সমিতি, স্কোপ ইত্যাদিতে আপনি সম্ভবত একই এসকিউএলটি অ্যাক্টিভেকর্ড রিলেশনাল কোয়েরিতে তৈরি করতে পারেন এবং এর সাথে দুর্দান্ত জিনিসগুলি করতে পারেন আর্নেল হিসাবে আর্নেল http://erniemiller.org/2010/03/28/advanced-activerecord-3-queries-with-arel/ এ উল্লেখ করেছেন । এবং, অবশ্যই অন্যান্য ওআরএম, রত্ন ইত্যাদি রয়েছে
যদি এটি প্রচুর ব্যবহৃত হয় এবং সূচকগুলি যুক্ত করা অন্য কার্যকারিতা / সংস্থান সংক্রান্ত সমস্যার কারণ না করে, পেমেন্ট_ডেটেলস.ক্রিয়েটেড_এটের জন্য এবং পেমেন্ট_অরফারস.ক্রিয়েট_এটের জন্য ডিবিতে একটি সূচক যুক্ত করার বিষয়টি বিবেচনা করুন।
যদি প্রচুর রেকর্ড এবং সমস্ত রেকর্ড একসাথে প্রদর্শিত না হয়, পৃষ্ঠাগুলি ব্যবহার করে বিবেচনা করুন:
যদি আপনাকে প্যাগিনেট লাগানোর দরকার হয় তবে প্রথমে ডিবিতে পেমেন্ট_রেকর্ডস নামে একটি ভিউ তৈরি করা বিবেচনা করুন যা পেমেন্ট_ডেটেলস এবং পেমেন্ট_অর্টিয়ারস টেবিলগুলিকে একত্রিত করে, তারপরে দেখার জন্য একটি মডেল রাখুন (যা কেবলমাত্র পঠনযোগ্য হবে)। কিছু ডিবি উপাদানযুক্ত দৃষ্টিভঙ্গি সমর্থন করে যা পারফরম্যান্সের জন্য ভাল ধারণা হতে পারে।
এছাড়াও রেলস সার্ভার এবং ডিবি সার্ভার, কনফিগারেশন, ডিস্ক স্পেস, নেটওয়ার্কের গতি / বিলম্বিতা / ইত্যাদি pro প্রক্সিমিটি ইত্যাদির উপর হার্ডওয়্যার বা ভিএম স্পেকগুলি বিবেচনা করুন এবং আপনি যদি না করেন তবে রেল অ্যাপ্লিকেশনটির চেয়ে আলাদা সার্ভার / ভিএম-তে ডিবি স্থাপন বিবেচনা করুন etc ।