使用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”但它没有用。
答案 0 :(得分:1)
在整个控制器和测试中,您使用User_type.all
,User_type.build
,User_type.new
,但您的模型名为UserType
。
答案 1 :(得分:0)
您模型的班级名称为UserType
。 User_type
未在任何地方定义。您可以保持模型名称不变并修复测试和控制器,或重命名模型名称。前者是Rails惯例,所以我建议你使用它(CamelCased名称)。
答案 2 :(得分:0)
将您的模型名称更改为课程中定义的UserType
,并从UserType
模型的表中删除type
列,或将其重命名为user_type
,因为这是保留的列名,只能用于单表继承。