में उपनाम नाम() और जुड़ने() में उपनाम नाम देने के लिए कैसे मैं उदाहरण के लिए उपनाम नाम दे सकता हूं includes()
? निम्नलिखित दिया जाता है:रेल 4 - सक्रिय रिकॉर्ड पूछताछ
- उपयोगकर्ता: सक्रिय रिकॉर्ड मॉडल
- छात्र: सक्रिय रिकॉर्ड मॉडल, उपयोगकर्ता से विरासत (एसटीआई)
- शिक्षक: सक्रिय रिकॉर्ड मॉडल, उपयोगकर्ता से विरासत (एसटीआई)
- परियोजना : सक्रिय रिकॉर्ड मॉडल
यहाँ कुछ उदाहरण:
पहला मामला (अधिक एसटीआई संघों)
Project.all.includes(:students, :teachers).order('teachers_projects.name ASC') # order on teachers
Project.all.includes(:students, :teachers).order('users.name ASC') # order on students
रेल एसक्यूएल में :teachers
के लिए नाम teachers_projects
उर्फ स्वचालित रूप से उपयोग करता है। मैं इसे कैसे ओवरराइट कर सकता हूं, ताकि मैं SQL में teachers_projects
के बजाय उपनाम नाम teachers
का उपयोग कर सकूं? :students
उपनाम का नाम users
मिलता है।
इस उदाहरण में विफल रहता है:
Project.all.includes(:students, :teachers).order('teachers.name ASC')
Project.all.includes(:students, :teachers).order('students.name ASC')
Project.all.includes(:students, :teachers).order('students_projects.name ASC')
दूसरे मामले (एक एसटीआई संघ)
अगर मैं विधि includes()
में केवल :students
(:teachers
के बिना) का उपयोग करें, रेल एसटीआई का नाम उर्फ का उपयोग करता है :students
:
users
(बिना
_projects
संलग्न)
Project.all.includes(:students).order('users.name ASC') # order on students
इस उदाहरण में विफल रहता है:
Project.all.includes(:students).order('students.name ASC')
Project.all.includes(:students).order('students_projects.name ASC')
प्रश्न
की तरह कुछ मौजूद सकता है:
Project.all.includes(:students).alias(students: :my_alias)
रेल ALIAS ट्रैकर
परीक्षण एपीपी
https://gist.github.com/phlegx/add77d24ebc57f211e8b
https://github.com/phlegx/rails_query_alias_names
क्या आपने Project.joins (: शिक्षकों) जैसी कुछ कोशिश की है। कहीं ...... – Leon
यदि आपको उत्तर मिलता है, तो कृपया मुझे _notify_ करें, ताकि मैं जवाब भी देख सकूं। –
क्या आप मॉडल परिभाषाओं, माइग्रेशन और कुछ डेटा दिखाने के लिए एक गिस्ट भी दे सकते हैं .. ताकि मैं स्थापित कर सकूं, और करने का प्रयास कर सकूं? –