ruby on rails - LoadError ऑटोलैड स्थिर संदेश में असमर्थ




ruby-on-rails activemodel (3)

इन पंक्तियों पर ध्यान दें;

@question = Question.new(params[:question])

@question.message = @message

तथा ;

attr_accessible :answer, :question, :sender_id, :recipient_id, :conversation_id

@question.message Question Model लाइन एक विशेषता को बुला रही है जो Question Model में सुलभ नहीं है इसलिए ऐसा करें;

attr_accessible :answer, :question, :sender_id, :recipient_id, :conversation_id, message

मेरे ऐप में; जब मैं फॉर्म जमा करता हूं, मुझे यह त्रुटि मिलती है:

LoadError at /questions
Unable to autoload constant Message, expected /app/models/message.rb to define it

यह Questions नियंत्रक में कार्रवाई करने के create इंगित करता है:

@message = current_user.messages.new(:subject => "You have a question from #{@question.sender_id}"`

संदेश मॉडल:

class Mailboxer::Message < ActiveRecord::Base
  attr_accessible :notification_id, :receiver_id, :conversation_id
end

एकीकरण परीक्षण के दौरान मुझे यह मिला। पता चला, यह जुड़नार से संबंधित था। /Test/fixtures/wrong_name.yml में मेरी अप्रयुक्त फ़ाइल को हटाना पड़ा


रेल में सम्मेलन (और यह ऑटोलैडर द्वारा लागू किया गया है), फ़ाइल पथ नामस्थान से मेल खाना चाहिए।

इसलिए, यदि आपके पास एक Mailboxer::Message मॉडल है, तो यह app/models/mailboxer/message.rb में होना चाहिए।

इसके अतिरिक्त, आपके पास शायद एक Message वर्ग को लोड करने की कोशिश में ऑटोलैडर किकिंग है (मेरा अनुमान है कि यह ActAsMessageable के भीतर से होता है)। यह लोड पथ में message.rb फ़ाइल की तलाश करता है, इसे app/model/ में ढूंढें और इस प्रकार उस फ़ाइल को लोड करें ताकि यह Message वर्ग पा सके।

समस्या यह है कि उस फ़ाइल में एक Message वर्ग नहीं मिलता है, केवल एक Mailboxer::Message वर्ग (जो कि मौलिक रूप से भिन्न है)। यही कारण है कि यह "ऑटोलोड स्थिर संदेश में असमर्थ है, इसे परिभाषित करने के लिए अपेक्षित /app/models/message.rb"।

इसे ठीक करने के लिए, डायरेक्टरी app/models/mailboxer/ बनाएं और इसमें Mailboxer::Message डालें।





mailboxer