سؤال

ولدي نموذجين: 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).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top