title: undefined method `questions' for nil:NilClass
body: <p>I am getting a NoMethodError <code>undefined method `questions' for nil:NilClass</code>. It's pointing to the create action on the line <code>@question = @conversation.questions.build(params[:question])</code></p>
  
  <p>Questions controller:</p>
  
  <pre><code>  respond_to :js, :html
  
     def index
        @questions = Question.all
        respond_with(@questions)
    end
  
    def show
      @question = Question.find(params[:id])
      @questions = Question.order("created_at DESC")
      respond_with(@questions)
    end
  
    def new
      @question = Question.new
      respond_with(@question)
    end
  
    def create
        @question = @conversation.questions.build(params[:question])
        if @question.save
          @message = current_user.messages.new(:subject =&gt; "You have a question from #{@question.sender_id}",
                                 :notification_id =&gt; @question.sender_id,
                                 :receiver_id =&gt; @question.recipient_id,
                                 :body =&gt; @question.question)
  
          @question.message = @message
          @question.save
          redirect_to questions_path, notice: 'Your question was saved successfully. Thanks!'
        else
          render :new, alert: 'Sorry. There was a problem saving your question.'
        end
      end
    end
  </code></pre>
  
  <p>Conversations controller:</p>
  
  <pre><code>       helper_method :mailbox, :conversation
          before_filter :conversation, only: :show
  
       def index
          @conversations ||= current_user.mailbox.inbox.all
          end
  
        def reply
          current_user.reply_to_conversation(conversation, *message_params(:body, :subject))
          redirect_to conversation
        end
  
        def trash_folder
          @trash ||= current_user.mailbox.trash.all 
          end
  
        def trash
          conversation.move_to_trash(current_user)
          redirect_to :conversations
          end
  
        def untrash
          conversation.untrash(current_user)
          redirect_to :conversations
          end
  
          def empty_trash
            current_user.mailbox.trash.each do |conversation|    conversation.receipts_for(current_user).update_all(:deleted =&gt; true)
            end
           redirect_to :conversations
          end
        end
  
    private
  
    def mailbox
     @mailbox ||= current_user.mailbox
    end
  
    def conversation
     @conversation ||= mailbox.conversations.find(params[:id])
    end
  
    def conversation_params(*keys)
     fetch_params(:conversation, *keys)
    end
  
    def message_params(*keys)
     fetch_params(:message, *keys)
    end
  
    def fetch_params(key, *subkeys)
     params[key].instance_eval do
       case subkeys.size
       when 0 then self
       when 1 then self[subkeys.first]
       else subkeys.map{|k| self[k] }
       end
     end
    end
  end
  </code></pre>
  
  <p>Messages controller:</p>
  
  <pre><code> def index
        redirect_to conversations_path(:box =&gt; @box)
      end
  
    # GET /message/new
    def new
      @message = current_user.messages.new
    end
  
     # POST /message/create
    def create
      @recipient = User.find(params[:user])
      current_user.send_message(@recipient, params[:body], params[:subject])
      flash[:notice] = "Message has been sent!"
      redirect_to :conversations
    end
  </code></pre>
  
  <p>Questions model:</p>
  
  <pre><code>  attr_accessible :answer, :question, :sender_id, :recipient_id
    belongs_to :user
  
    belongs_to :sender,
      :class_name =&gt; 'User',
      :foreign_key =&gt; 'sender_id'
      belongs_to :recipient,
      :class_name =&gt; 'User',
      :foreign_key =&gt; 'recipient_id'
  
      belongs_to :message
  
  end
  </code></pre>
  
  <p>User model:</p>
  
  <pre><code> acts_as_messageable
    has_many :notifications
    has_many :questions, foreign_key: :recipient_id
    has_many :sent_questions, class_name: 'Question', foreign_key: :sender_id
  
  
      def mailboxer_email(object)
          if self.no_email
            email
          else
              nil
          end
      end
  end
  </code></pre>
  
  <p>development log:</p>
  
  <pre><code>Started POST "/questions" for 127.0.0.1 at 2014-05-29 12:32:46 -0400
  Processing by QuestionsController#create as HTML
    Parameters: {"utf8"=&gt;"✓", "authenticity_token"=&gt;"YWtv+TixScaYsXpJ6F47uBHkNvcruyHV7cyOtU6pWnQ=", "question"=&gt;{"question"=&gt;"This question should have an conversation id", "sender_id"=&gt;"2", "recipient_id"=&gt;"1"}, "commit"=&gt;"Add Question"}
    User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`auth_token` = 'Mqy5_1kyb4hAsrmB9Q0fug' LIMIT 1
     (0.2ms)  BEGIN
    SQL (0.4ms)  INSERT INTO `questions` (`created_at`, `question`, `recipient_id`, `sender_id`, `updated_at`) VALUES ('2014-05-29 16:32:47', 'This question should have an conversation id', 1, 2, '2014-05-29 16:32:47')
     (0.5ms)  COMMIT
  WARNING: Can't mass-assign protected attributes for Message: notification_id, reciver_id
      app/controllers/questions_controller.rb:23:in `create'
      app/controllers/application_controller.rb:13:in `user_time_zone'
     (0.2ms)  BEGIN
    User Load (0.5ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1
    SQL (0.3ms)  INSERT INTO `notifications` (`body`, `created_at`, `sender_id`, `sender_type`, `subject`, `type`, `updated_at`) VALUES ('This question should have an conversation id', '2014-05-29 16:32:47', 2, 'User', 'You have a question from 2', 'Message', '2014-05-29 16:32:47')
    SQL (0.3ms)  UPDATE `questions` SET `message_id` = 164, `updated_at` = '2014-05-29 16:32:47' WHERE `questions`.`id` = 135
     (0.5ms)  COMMIT
  Redirected to http://localhost:3000/questions
  Completed 302 Found in 308ms (ActiveRecord: 10.2ms)
  </code></pre>
  
  <p>This new code is preventing the question from being created in the Questions table. I made the changes to the code because I had the questions submitting to the database but it was not creating a <code>conversation_id</code> with the mailboxer gem inside the Notifications table. Below is the original code that created the question inside the Questions table, but had <code>NULL</code> for <code>conversation_id</code>.</p>
  
  <pre><code>def create
      @question = Question.new(params[:question])
      if @question.save
        @message = current_user.messages.new(:subject =&gt; "You have a question from #{@question.sender_id}",
                               :notification_id =&gt; @question.sender_id,
                               :reciver_id =&gt; @question.recipient_id,
                               :body =&gt; @question.question)
  
        @question.message = @message
        @question.save
        redirect_to questions_path, notice: 'Your question was saved successfully. Thanks!'
      else
        render :new, alert: 'Sorry. There was a problem saving your question.'
      end
    end
  </code></pre>
  
  <p>So I need help with fixing the undefined method and having the question submit to the database with a <code>conversation_id</code>. I need the <code>conversation_id</code> set so the Question can be sent to the recipients inbox (this is where the user answers their questions).</p>