ruby on rails - has_many through relationship to the same Model -
मेरे पास उपयोगकर्ता तालिका है:
वर्ग उपयोगकर्ता & lt; ActiveRecord :: बेस है_माइंडो: ब्रोकर_क्लाइंस,: class_name = & gt; "ब्रोकरक्लाइंट्स",: विदेशी_की = & gt; "ब्रोकर_आईडी" है_माया: क्लाइंट,: के माध्यम से = & gt; : ब्रोकर_ग्राहक, विदेशी_की = & gt; "ब्रोकर_आईडी" के पास_माइयां हैं: दलालों, के माध्यम से = & gt; : ब्रोकर_ग्राहक, विदेशी_की = & gt; "क्लाइंट_आईडी" एंड और ब्रोकर कलियल्स तालिका:
वर्ग ब्रोकरक्लाइंस & lt; ActiveRecord :: बेस is_to: broker, class_name: "user" belong_to: client, class_name: "user" end अब जब मैं एक रिश्ते बनाऊँगा:
& gt; & gt; BrokerClients.create (broker_id: User.first.id, client_id: User.last.id) यूज़र लोड (9। 7 एमएमएस) SELECT "users"। * "उपयोगकर्ता" से "यूज़र्स" द्वारा "।" आईडी "एएससी लिमिटेड 1 यूजर लोड (1.3ms) "उन" चुनें। * से "उन" से "उन" आदेश। "आईडी" DESC सीमा 1 (1.3ms) शुरू एसक्यूएल (41.5ms) "broker_clients" (में डालने "broker_id", "client_id", "created_at", "updated_at") मान ($ 1, $ 2, $ 3, $ 4) पर वापस आ "आईडी" [[ "broker_id", 4], [ "client_id", 210], [ "created_at", शुक्र, 10 अक्टूबर 2014 13 : 43: 27 ईडीटी -04: 00], ["अपडेट_टाट", शुक्र, 10 अक्टूबर 2014 13:43:27 EDT -04: 00]] (0.5 एमएमएस) COMMIT = & gt; # & Lt; ब्रोकरक्लिएंट आईडी: 1, ब्रोकर_आईडी: 4, क्लाइंट_आईडी: 210, बनाया गया_एट: "2014-10-10 17:43:27", अपडेटेड_एटी: "2014-10-10 17:43:27" & gt; & Gt; & gt; User.first.brokers.first जब मैं क्लाइंट प्राप्त करने का प्रयास करता हूं तो यह ठीक काम कर रहा है:
& gt; & gt; उपयोगकर्ता "प्रथम" क्लाइंट: प्रथम उपयोगकर्ता लोड (0.6 एम एस) चुनें "उपयोगकर्ता"। * "उपयोगकर्ता" से "उपयोगकर्ता" आदेश से "आईडी" एएससी सीमा 1 उपयोगकर्ता लोड (1.2 एमएमएस) का चयन करें "उपयोगकर्ता"। * से "उपयोगकर्ता" "INNER JOIN" ब्रोकर_ग्राहक "चालू" यूजर "।" आईडी "=" ब्रोकर_क्लाइंट्स "।" = & Gt; # & lt; उपयोगकर्ता आईडी: 210, .... लेकिन क्लाइंट के लिए जब मैं इसके संबंधित दलालों को प्राप्त करने की कोशिश करता हूं तो वह काम नहीं करता:
> gt; & gt; उपयोगकर्ता .last.brokers.first उपयोगकर्ता लोड (0.7ms) SELECT "उपयोगकर्ता"। * "उपयोगकर्ताओं" "उपयोगकर्ता" से "उपयोगकर्ता"। "आईडी" डीईएससी सीमा 1 उपयोगकर्ता लोड (0.7 एमएमएस) का चयन करें "उपयोगकर्ता"। * से "उपयोगकर्ता" इनर जॉइन "ब्रोकर_क्लैंटर्स" ऑन "उपयोगकर्ता"। "आईडी" = "ब्रोकर_ग्राहक"। "ब्रोकर_आईड" WHERE "ब्रोकर_एगल" "ब्रोकर_आईडी" = $ 1 ORDER द्वारा "उपयोगकर्ता"। "आईडी" एएससी सीरीज 1 [["ब्रोकर_आईडी", 210]] = & gt; शून्य कोई भी मदद? उपयोगकर्ता मोडल में: -
में
has_many: broker_clients,: class_name = & gt; "ब्रोकरक्लाइंट्स",: विदेशी_की = & gt; "ब्रोकर_आईडी" है_मेरा: क्लाइंट, के माध्यम से = & gt;: ब्रोकर_ग्राहक, विदेशी_ कुंजी = & gt; "ब्रोकर_आईडी" है_माया: inverse_broker_clients ,: class_name = & gt; "ब्रोकरक्लाइंट्स",: विदेशी_की = & gt; "Client_id" है_माया: ब्रोकर,: के माध्यम से = & gt; : Inverse_broker_clients,: विदेशी_की = & gt; "Client_id"
Comments
Post a Comment