Rails error uninitialized constant User::Friendship

658 views Asked by At

I'm working on a project that has a typical friendship model. User Class needs to have a self-referencing relationship so each user can befriend multiple friends and can be befriended by multiple users... In short i need the exact same thing described in this tutorial:

http://railscasts.com/episodes/163-self-referential-association?view=asciicast

But after following the whole video to the letter i get this error

uninitialized constant User::Friendship

This is what my User model looks like:

class User < ActiveRecord::Base
  has_many :friendships
  has_many :friends, :through => :friendships
end

Friendship model:

class Friendship < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, class_name => "User"
end

And the create method of the friendships_controller

def create
    current_user = User.find(session[:user])
    # BELOW LINE HAS THE ERROR
    current_user.friendships.build(:friend_id => params[:friend_id])

    respond_to do |format|
      if @friendship.save
        format.html { redirect_to @friendship, notice: 'User Added To your team.' }
        format.json { render :show, status: :created, location: @friendship }
      else
        format.html { render :new }
        format.json { render json: @friendship.errors, status: :unprocessable_entity }
      end
    end
  end

I don't know if it matters or not but I'm not using any user management plugin like Ryan in the video (I think he's using OAuth or something) ... Plus I did not generate the Friendship controller through nifty_scaffold as he does in the tutorial here's the command I used to generate the scaffold

rails generate scaffold Friendship user_id:integer friend_id:integer create destroy

plus here's my ruby and rails versions if it helps...

Rails version 4.1.7
Ruby version 2.0.0p481

I've been trying to debug my code, searching the internet to figure out whats wrong but noting seems to work. Any thoughts on what might be the problem?

0

There are 0 answers