我在铁轨上使用红宝石,我遇到了一些问题!
我试图创建一个数据库,但它似乎无法正常工作! 我生成了一个模型和一个数据库文件,感谢命令:
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行):
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
答案 0 :(得分:1)
似乎没有正确运行迁移。它看起来也不像rails g model
命令生成的迁移。它缺少create_table
方法。看起来您之前创建了Photo模型,然后创建了另一个迁移以添加图像字段。
我的第一个预感是尝试滚动迁移:
rake db:migrate:down VERSION=2011234116731
然后再次运行rake db:migrate
并检查您的架构文件以确保所有列都在那里。