耙子流产了! TypeError:Parts不是类

时间:2016-03-14 05:01:50

标签: ruby-on-rails rake typeerror abort

我现在用我的数据库得到了另一个错误,这次我说的一个类“Part”不是一个类。我似乎无法知道这是从哪里跟踪

rake Parts type error

这是我的Parts数据库值(文件名是parts.rb)

class Parts < ActiveRecord::Migration
  def change
    create_table :parts do |t|
      t.string :name
      t.text :description
      t.integer :category_id
    end
  end
end

我的零件控制器:

class PartsController < ApplicationController
  before_filter :authorize, :except => :index

  def index
    @parts = Part.all
  end

  def new
    @part = Part.new
  end

  def show
    @part = Part.find(params[:id])
  end

  def create
    @part = Part.new(part_params)
      if @part.save
        redirect_to part_path(@part)
  end
end

  def edit
    @part = Part.find(params[:id])
  end

  def update
    @part = Part.find(params[:id])
      if @part.update_attributes(part_params)
        redirect_to @part
      end
    end

    def destroy
      @part = Part.find(params[:id])
      @part.destroy
        redirect_to parts_path
    end

  private
  def part_params
    params.require(:part).permit(:description, :name)
  end

end

我的零件模型只是

class Part < ActiveRecord::Base
end

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

它可能不喜欢'Parts'作为与模型或控制器中的某些东西冲突的类名。或者你在某处定义了Parts模块?

我建议将迁​​移类名称更改为CreateParts,即

def CreateParts < ActiveRecord::Migration
  def change
     …
  end
end

我也会更改文件名以防万一(2016 ... 09_create_parts.rb)

答案 1 :(得分:0)

希望您使用像

这样的模型生成迁移文件
bundle exec rails g model Part name:string description:text category_id:integer

它将创建迁移文件2016...09_create_parts.rb

它看起来像

def CreateParts < ActiveRecord::Migration
  def change
   create_table :parts do |t|
      t.string :name
      t.text :description
      t.integer :category_id
    end
  end
end