ترتيب الأعمدة من النتائج من القضبان دعوة find_by_sql أكتيفيريكورد

StackOverflow https://stackoverflow.com/questions/209558

سؤال

وأنا محاولة لوضع بعض الشاشات تقرير الأساسية. أنا عندي بعض الاستفسارات SQL معقدة إلى حد ما أنا تغذي طريقة find_by_sql أكتيفيريكورد ل. المشكلة أواجه هنا هو أنني فقدان ترتيب الأعمدة على النحو الوارد في الاستعلام الأصلي. أفترض أن هذا هو لأن فئة التجزئة لا يحافظ أجل دخول مفاتيحها.

هل هناك طريقة للتغلب على هذه المشكلة؟ يجب أن أكون باستخدام طريقة مختلفة ثم find_by_sql للاستعلامات بلدي؟

هل كانت مفيدة؟

المحلول

وأنت الصحيح في أن روبي تجزئة لا يحافظ النظام. هذا جزء من هذه النقطة، حقا - يمكنك الوصول إليه باستخدام مفتاح

وأفترض الاستعلام الخاص بك هو مكتوب لتقديم الأعمدة في الترتيب الذي تريد الناتج منها وكنت على أمل لإخراج القيم عبر حلقة؟ يبدو وكأنه فكرة لائق بما فيه الكفاية، ولكن لا أستطيع أن أفكر في طريقة لتحقيق ذلك دون بعض العمل الإضافي على الأقل.

ما أوصى هو للوصول صراحة الأعمدة بواسطة مفتاح في القالب، منذ وأنت تسير على الأرجح في نهاية المطاف تطبيق الأساليب، وتنسيق باستخدام وظائف المساعد مثل number_with_delimiter، وهذا النوع من الشيء.

لحصول شيء من هذا القبيل الاختصار المذكورة أعلاه، وأنا افترض أنك يمكن أن تخلق مجموعة من الرموز في ترتيب المطلوبة وسحب القيم من التجزئة في حلقة. شيء من هذا القبيل؟ (يرجى عذر إرب يحتمل المراوغة: أنا haml المستخدم)

<% for row in @report.rows %>
    <tr>
    <% for col in [:a, :b, :c] %>
        <td><%= row[col] %></td>
    <% end %>
    </tr>
<% end %>

نصائح أخرى

وأود أن استخدام Ruport للحصول على التقرير. ومن لديه جيدة التكامل أكتيفيريكورد وأنها تمكنك من التحكم في ترتيب الأعمدة والى حد كبير أي شيء آخر. وانها بسيطة بما فيه الكفاية لاستخدام هذا أنا لا أعتبر ذلك حتى مبالغة ل "الأساسية" تقارير.

في القضبان 3.2 و أعلى يمكنك استخدام attribute_names لكل سجل من النتائج find_by_sql. تم توثيق هذا في find_by_sql :

<اقتباس فقرة>   

وينفذ استعلام SQL مخصصة ضد قاعدة البيانات الخاصة بك وإرجاع جميع   النتائج. سيتم إرجاع نتائج صفيف مع الأعمدة   طلب مغلفة كما سمات النموذج الذي استدعاء هذا الأسلوب   من عند. إذا كنت استدعاء Product.find_by_sql ثم ستكون النتائج   عاد في كائن Product مع سمات الذي حددته في   SQL الاستعلام.

     

إذا كنت استدعاء استعلام SQL معقدة الذي يمتد جداول متعددة في   الأعمدة المحددة من قبل SELECT سيكون سمات هذا النموذج،   أم لا هم أعمدة الجدول المقابل

لنماذج يمكنك استخدام COLUMN_NAMES. لمزيد من المعلومات حول الاختلافات نرى SA الجواب الأخرى: كيف تكتشف نموذج الصفات في القضبان

وكيف حالك إنشاء هذه "شاشات تقرير"؟ هم إرب القوالب؟ هل مجرد الدعوة. كل على أعمدة لطباعة كل منهم؟

إذا كان هذا هو الحال هل يمكن تجاوز الأعمدة () في النماذج الخاصة بك لإرجاع صفيف أمر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top