Rails:未初始化的常量User :: UserAlbum?

嗨我目前正在尝试构建一个附有许多用户的相册,我正在尝试修复它们之间的关系,以便它是多对多的(一个用户+多个专辑,一个专辑+多个用户)。 但是,在我触摸模型和迁移后,当我尝试加载show.html.erb时,我收到错误。 请帮忙!!

错误:

uninitialized constant User::UserAlbum

show.html.erb

  
You currently have
hey boo

专辑模型

 class Album  :user_albums has_many :photos end 

用户模型

 class User  :create validates_format_of :name, :with => /[A-Za-z]+/, :on => :create validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[az]{2,})\Z/i, :on => :create validates_length_of :password, :minimum => 5, :on => :create has_many :user_albums has_many :albums, :through => :user_albums accepts_nested_attributes_for :albums end 

照片模型(也许没有必要看这个)

 class Photo < ActiveRecord::Base belongs_to :album end 

user_albums模型

 class UserAlbums < ActiveRecord::Base belongs_to :album belongs_to :user end 

模式

 ActiveRecord::Schema.define(:version => 20121001160745) do create_table "albums", :force => true do |t| t.string "name" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false t.string "description" end create_table "photos", :force => true do |t| t.string "avatar_file_name" t.string "avatar_content_type" t.integer "avatar_file_size" t.datetime "avatar_updated_at" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false t.integer "album_id" end create_table "user_albums", :force => true do |t| t.datetime "created_at", :null => false t.datetime "updated_at", :null => false t.integer "user_id" t.integer "album_id" end create_table "users", :force => true do |t| t.string "name" t.string "email" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false t.string "password_digest" end 

结束

用户控制器

class UsersController <ApplicationController

  def index @users = User.all respond_to do |format| format.html format.json { render json: @users } end end def new @user = User.new respond_to do |format| format.html # new.html.erb format.json { render json: @user } end end def create @user = User.new(params[:user]) respond_to do |format| if @user.save format.html { redirect_to @user, notice: 'User successfully created.' } format.json { render json: @user, status: :created, location: @user } else format.html { render action: 'new' } format.json { render json: @user.errors, status: :unprocessable_entity } end end end def show @user = User.find(params[:id]) end def update @user = User.update_attributes(params[:user]) if @user.save format.html { redirect_to @user, notice: 'User successfully updated.'} format.json { render json: @user, status: :created, location: @user } else format.html { render action: 'edit' } format.json { render json: @user.errors, status: :unprocessable_entity } end end end 

解决方案:我的UserAlbums模型是复数而不是UserAlbum。

你有UserAlbum模型吗?

如果不是 – 您需要为您的关联创建一个有效的关联。

 class UserAlbum < ActiveReocrd::Base belongs_to :user belongs_to :album end