नहीं, वे अंतर-परिवर्तनीय नहीं हैं, और कुछ वास्तविक अंतर हैं।
belongs_to
का अर्थ है कि इस वर्ग के लिए विदेशी कुंजी तालिका में है। तो belongs_to
केवल उस कक्षा में जा सकता है जिसमें विदेशी कुंजी है।
has_one
का अर्थ है कि इस वर्ग का संदर्भ देने वाली दूसरी तालिका में एक विदेशी कुंजी है। तो has_one
केवल एक कक्षा में जा सकता है जिसे किसी अन्य तालिका में कॉलम द्वारा संदर्भित किया जाता है।
तो यह गलत है:
class Person < ActiveRecord::Base
has_one :cell # the cell table has a person_id
end
class Cell < ActiveRecord::Base
has_one :person # the person table has a cell_id
end
तो यह है:
class Person < ActiveRecord::Base
belongs_to :cell # the person table has a cell_id
end
class Cell < ActiveRecord::Base
belongs_to :person # the cell table has a person_id
end
एक दो तरह से संघ के लिए, आप प्रत्येक में से एक की जरूरत है, और वे सही कक्षा में जाना है। एक तरफा सहयोग के लिए भी, यह महत्वपूर्ण है कि आप किस का उपयोग करते हैं।
स्रोत
2009-05-14 06:51:14
एक अच्छा [यहां ब्लॉग] (http://requiremind.com/differences-between-has-one-and-belongs-to-in-ruby-on-rails/) इसके लिए! –
उपरोक्त कोड गलत है, 'has_one: cell' और 'belong_to: person' होना चाहिए ** ** ** ** कोलन और निम्न शब्द के बीच एक स्थान नहीं होना चाहिए। – Josh