غير قادر على الوصول إلى نموذج ذات الصلة مع has_one
-
03-07-2019 - |
سؤال
ولدي نموذجين: Show
وVenue
. مشاهدة ديها مكان واحد في حين ينتمي كل مكان للعرض. ويعرف هذا الشرط في كلا الملفين نموذج مع has_one
وbelongs_to
البيانات بشكل صحيح. ومع ذلك، وأنا لست قادرا على الوصول إلى مكان عن طريق القيام show.venue
. النظر في التعليمات البرمجية التالية حيث الصورة هي المثال Show
:
logger.info("*********************")
logger.info("#{s.inspect}")
logger.info("#{Venue.find(s.venue_id)}") # Works
logger.info("#{s.venue}") # Causes a MySQL Error
logger.info("*********************")
وأنا أشعر بأن الخط الذي يسبب يجب أن تعمل على خطأ الخلية. هذا هو الخطأ:
ActiveRecord::StatementInvalid (Mysql::Error: Unknown column 'venues.show_id' in 'where clause': SELECT * FROM `venues` WHERE (`venues`.show_id = 95) LIMIT 1)
وليس لدي أي فكرة لماذا يحاول الوصول venues.show_id
. أي أفكار؟
المحلول
لديك المفاتيح الخارجية عكسه. في الاتفاقيات أكتيفيريكورد، ويجب على الطبقة مع belongs_to خريطة لقاعدة البيانات مع المفتاح الخارجي. انظر أكتيفيريكورد API : "يستخدم جمعية belongs_to دائما في نموذج يحتوي على مفتاح خارجي ". وهذا ما يجعل بعض المعنى، إذا كنت تفكر في الطريقة التي belongs_to يتفاعل مع كل has_one وhas_many (كما من الواضح أنه لا يمكن وضع المفاتيح الخارجية في نموذج has_many).