Ruby on rails - 模型缺失[RAILS]需要attr_accessor

时间:2013-11-25 16:46:12

标签: html ruby-on-rails ruby web

我在铁轨上使用红宝石,我遇到了一些问题!

我试图创建一个数据库,但它似乎无法正常工作! 我生成了一个模型和一个数据库文件,感谢命令:

rails g model photos 

这是我的代码

photos_controller.rb:

class PhotosController < ApplicationController


  # POST /photos
  # POST /photos.json
  def create
    @photo = Photo.new(photo_params)


photo_controller.rb

    respond_to do |format|
      if @photo.save
        format.html { redirect_to @photo, notice: 'Photo was successfully created.' }
        format.json { render action: 'show', status: :created, location: @photo }
      else
        format.html { render action: 'new' }
        format.json { render json: @photo.errors, status: :unprocessable_entity }
      end
    end
  end

# Never trust parameters from the scary internet, only allow the white list through.
    def photo_params
      params.require(:photo).permit(:image)
    end
end
模型photo.rb中的

class Photo < ActiveRecord::Base
    has_attached_file :image
end
文件2011234116731_create_photos.rb中

class CreatePhotos < ActiveRecord::Migration

     def self.up
         add_column :photos, :image_file_name, :string
         add_column :photos, :image_content_type, :string
         add_column :photos, :image_file_size, :string
         add_column :photos, :image_update_at, :string
     end

     def self.down
         remove_column :photos, :image_file_name, :string
         remove_column :photos, :image_content_type, :string
         remove_column :photos, :image_file_size, :string
         remove_column :photos, :image_update_at, :string
     end

end

但是当我尝试加载使用模型元素“image”的页面时,我出现以下错误:

'image_file_name'需要attr_accessor所需的照片模型 提取的来源(第27行):

POST /photos.json

def创建 @photo = Photo.new(photo_params) respond_to do | format | if @ photo.save

我注意到迁移似乎不起作用,因为在我的scheme.rb中: (我已经完成了rake db:migrate命令)

ActiveRecord::Schema.define(version: 20131124183207) do

  create_table "photos", force: true do |t|
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end

1 个答案:

答案 0 :(得分:1)

似乎没有正确运行迁移。它看起来也不像rails g model命令生成的迁移。它缺少create_table方法。看起来您之前创建了Photo模型,然后创建了另一个迁移以添加图像字段。

我的第一个预感是尝试滚动迁移:

rake db:migrate:down VERSION=2011234116731

然后再次运行rake db:migrate并检查您的架构文件以确保所有列都在那里。