मेरे पास दो अलग-अलग स्कीमा जैसे दो टेबल हैं cases
और events
।रेल पोस्टग्रेस्क्ल एकाधिक स्कीमा और एक ही तालिका का नाम
प्रत्येक स्कीमा में मैं मेज बुनियादी है
events.basic
cases.basic
यह टेबल संबंध:
events.basic
है एकcases.basic
(cases.basic
कईevents.basic
है)
मेरे प्रयास विफल रहे हैं:
फ़ाइल cases_basic.rb
class CasesBasic < ActiveRecord::Base
set_table_name 'cases.basic'
set_primary_key 'case_id'
has_many :Events, :class_name => 'EventsBasic', :foreign_key => 'case_id'
end
फ़ाइल events_basic.rb
class EventsBasic < ActiveRecord::Base
set_table_name 'events.basic'
set_primary_key 'event_id'
belongs_to :Case, :class_name => 'CasesBasic', :foreign_key => 'case_id'
end
पर्यावरण: रूबी 1.9.3
, रेल 3.1.3
, gem 'pg'
मैं इस सवाल का जवाब देने के लिए की आवश्यकता है:
- कैसे रेल सक्रिय रिकॉर्ड में इस स्थिति से निपटने के लिए?
- इस तालिका को कैसे क्वेरी करें?
- कैसे में
rake db:schema:dump
संपादित इस स्थिति को संभालने के लिए:
belongs_to
और has_many
बदलने के बाद (जैसे सन्नाटा सुझाव है) मैं एक ही त्रुटि है
PGError: ERROR: column basic.case_id does not exist
LINE 1: ...IN "cases"."basic" ON "cases"."basic"."case_id" = "events"."...
^
: SELECT "events"."basic".* FROM "events"."basic" INNER JOIN "cases"."basic" ON "cases"."basic"."case_id" = "events"."basic"."case_id" LIMIT 3
रेल बुरा उत्पन्न एसक्यूएल। मुझे कुछ उपनामों का उपयोग करके किया जाना चाहिए:
"घटनाओं" से चुनें। "मूल" टी 1 इनरर जॉइन "मामलों"। "मूल" टी 2 ऑन टी 1। "Case_id" = t2। "Case_id" LIMIT 3
संपादित करें 2: ठीक है यह मेरा च *** बग, मैं अपने उदाहरण डेटाबेस में events.basic.case_id स्तंभ और विदेशी कुंजी जोड़ने नहीं किया। यह काम करता है!
प्रश्न 1 और 2 काम कर रहे हैं, लेकिन हम के बारे में सवाल है rake db:schema:dump
इसके बारे में क्या? रेल केवल सार्वजनिक स्कीमा के लिए मॉडल उत्पन्न करता है।
मेरे पास इतनी सारी टेबल और रिश्तों हैं जो मैं उन्हें उत्पन्न करना चाहता हूं।
आपका ': ईवेंट' और 'केस' शायद ': ईवेंट' और 'केस' होना चाहिए, लेकिन शायद यह ठीक नहीं होगा। –
@muistooshort ': घटनाक्रम 'और' केस 'एलियास की तरह दिखता है और इस मामले में एसक्यूएल में नहीं लिया जाता है –
मैं टेबल की तरह दिखने के बारे में थोड़ा उलझन में हूं,' चालू" मामलों को क्या करना चाहिए। "मूल" "case_id" = "घटनाएं"। "मूल"। "case_id" 'स्थिति में शामिल होने की तरह दिखता है? तालिकाओं में से एक में 'case_id' नहीं है और यह एक समस्या है, अगर आप इसे हाथ से कर रहे थे तो आप उस स्थिति में कैसे शामिल होंगे? –