Rails无法自动加载常量user_type

时间:2016-09-21 13:39:30

标签: ruby-on-rails

使用user_types模型(id和类型为字符串)描述的具有不同权限的用户模型来构建应用程序。当我运行rails test时,我收到错误

LoadError: Unable to autoload constant User_type, expected app/models/user_type.rb to define it

这是我的模特:

class UserType < ActiveRecord::Base
    belongs_to :user
    validates :type, presence: true, length: { maximum: 100 }
end

以下是控制器和测试文件

class UserTypeController < ApplicationController
    def index
        @user_type = User_type.all
    end 
    def new
        @user_type = User_type.build(user_type_params)
    end
    private
    def user_type_params
        params.require(:user_type).permit(:type)
    end
end

测试模型:

require 'test_helper'

class UserTypeTest < ActiveSupport::TestCase
  # test "the truth" do
  #   assert true
  # end
  def setup
    @user_type = User_type.new(id:2,type:"test")
  end
  test "is_valid" do
    assert @user_type.valid?
  end

end

我想做一些基本的“is_valid”测试,我得到了上面描述的错误。我还删除了最后一个模型“user_type”并将其创建为“UserType”但它没有用。

3 个答案:

答案 0 :(得分:1)

在整个控制器和测试中,您使用User_type.allUser_type.buildUser_type.new,但您的模型名为UserType

答案 1 :(得分:0)

您模型的班级名称为UserTypeUser_type未在任何地方定义。您可以保持模型名称不变并修复测试和控制器,或重命名模型名称。前者是Rails惯例,所以我建议你使用它(CamelCased名称)。

答案 2 :(得分:0)

将您的模型名称更改为课程中定义的UserType,并从UserType模型的表中删除type列,或将其重命名为user_type,因为这是保留的列名,只能用于单表继承。