belongs_to
और has_one
के बीच क्या अंतर है?belong_to और has_one के बीच क्या अंतर है?
रेल गाइड पर रुबी पढ़ना मेरी मदद नहीं करता है।
belongs_to
और has_one
के बीच क्या अंतर है?belong_to और has_one के बीच क्या अंतर है?
रेल गाइड पर रुबी पढ़ना मेरी मदद नहीं करता है।
वे अनिवार्य रूप से वही काम करते हैं, केवल अंतर ही आपके रिश्ते के किनारे पर है। यदि User
में Profile
है, तो User
कक्षा में आपके पास has_one :profile
और Profile
कक्षा में आपके पास belongs_to :user
होगा। यह निर्धारित करने के लिए कि अन्य वस्तु किसके पास है, देखें कि विदेशी कुंजी कहां है। हम कह सकते हैं कि User
"है" Profile
क्योंकि profiles
तालिका में user_id
कॉलम है। users
तालिका पर profile_id
नामक कॉलम था, हालांकि, हम कहेंगे कि Profile
में User
है, और संबंधित_to/has_one स्थानों को बदल दिया जाएगा।
here एक और विस्तृत स्पष्टीकरण है।
ठीक है समझ में आता है, है_ए संपत्ति है, जबकि एक संबंधित संबंध अधिक है। – Blankman
अच्छा ब्लॉग [इस पर] (http://requiremind.com/differences-between-has-one-and-belongs-to-in-ruby-on-rails/)। –
तो यह वास्तव में संक्षिप्त कहने के लिए: 'उत्पाद संबंधित है' दुकान 'का अर्थ है' उत्पादों 'तालिका में 'shop_id' कॉलम –
यह कहां है कि विदेशी कुंजी बैठती है।
class Foo < AR:Base
end
belongs_to :bar
, तो कम महत्वपूर्ण चीज़ें तालिका एक bar_id
कॉलम हैhas_one :bar
, तो सलाखों तालिका एक foo_id
स्तंभवैचारिक स्तर पर, हो तो यदि आपके class A
has_one
class B
के साथ संबंध है तो class A
class B
का अभिभावक है इसलिए आपका class B
के साथ belongs_to
संबंध होगा क्योंकि यह class A
का बच्चा है।
दोनों एक 1-1 संबंध व्यक्त करते हैं। अंतर यह है कि अधिकतर विदेशी कुंजी कहां रखना है, जो belongs_to
संबंध घोषित करने वाले वर्ग के लिए तालिका में जाता है।
CREATE TABLE users (
id int(11) NOT NULL auto_increment,
account_id int(11) default NULL,
name varchar default NULL,
PRIMARY KEY (id)
)
CREATE TABLE accounts (
id int(11) NOT NULL auto_increment,
name varchar default NULL,
PRIMARY KEY (id)
)
है जो दो साल पहले से ही पहले से ही स्वीकृत उत्तर जैसा ही है। –
यह काफी बेहतर जवाब है। – typeoneerror
has_one
और आम तौर पर belongs_to
एक अर्थ में एक ही है कि वे अन्य संबंधित मॉडल को इंगित कर रहे हैं:
class User < ActiveRecord::Base
# I reference an account.
belongs_to :account
end
class Account < ActiveRecord::Base
# One user references me.
has_one :user
end
इन कक्षाओं लिए टेबल की तरह कुछ लग सकता है। belongs_to
सुनिश्चित करें कि इस मॉडल में foreign_key
परिभाषित है। has_one
यह सुनिश्चित करता है कि अन्य मॉडल has_foreign
कुंजी परिभाषित किया गया है।
अधिक विशिष्ट होने के लिए, relationship
के दो पक्ष हैं, एक Owner
है और अन्य Belongings
है। यदि केवल has_one
परिभाषित किया गया है तो हम इसे Belongings
प्राप्त कर सकते हैं लेकिन belongings
से Owner
प्राप्त नहीं कर सकते हैं। Owner
का पता लगाने के लिए हमें belongs_to
को संबंधित मॉडल में भी परिभाषित करने की आवश्यकता है।
एक अतिरिक्त बात यह है कि मैं जोड़ने के लिए है, तो हम मान लीजिए चाहते मॉडल संघ निम्नलिखित है
class Author < ApplicationRecord has_many :books end
अगर हम केवल ऊपर संघ बारे में तो हम से,
@books = @author.books
लेकिन एक विशेष पुस्तक के लिए हम से इसी लेखक नहीं मिल सकता है,
@author = @book.author
इस
class Book < ApplicationRecord
belongs_to :author
end
इस तरह उपरोक्त कोड काम काम हम भी बुक मॉडल के लिए संघ जोड़ने की जरूरत है, बनाने के लिए बुक मॉडल के लिए विधि 'लेखक' जोड़ देगा।
मोड विवरण के लिए guides
संभावित डुप्लिकेट [\ _one के बीच अंतर और रेल में संबंधित है \ _to?] (Http://stackoverflow.com/questions/861144/difference-between-has-one-and-belongs -टू-इन-रेल) – Nakilon