2013-11-25 2 views
1

Я использую рубин на рельсах, и у меня есть некоторые проблемы с ним!Рубин на рельсах - модель отсутствует Требуется attr_accessor для [RAILS]

Я попытался создать базу данных, но, похоже, не работает! я создал модель и файл базы данных, чтобы поблагодарить команду:

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 

Но когда я пытаюсь загрузить страницу, которую используют элемент «образ» модели, я га следующее сообщение об ошибке:

Фото модель отсутствуют обязательные attr_accessor для 'image_file_name' извлеченного источника (около линии № 27):

POST /photos.json

def create @photo = Photo.new (photo_params) reply_to do | формат | если @ photo.save

Я заметил, что миграция, кажется, не работает, потому что в моем scheme.rb: (я сделал грабли БД: мигрировать команду)

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

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

end 

ответ

1

Не кажется как миграция выполнена правильно. И это также не похоже на миграцию, которая будет генерироваться командой rails g model. В нем отсутствует метод create_table. Похоже, что вы ранее создали Фото-модель, а затем создали другую миграцию, чтобы добавить поля изображения.

Моя первая догадка будет пытаться качению миграцию обратно:

rake db:migrate:down VERSION=2011234116731 

Затем работает rake db:migrate снова и проверьте файл схемы, чтобы убедиться, все столбцы есть.

+0

спасибо! Теперь это прекрасно! – Rabbit56

+0

Нет проблем, не стесняйтесь отвечать на ответ :) – DiegoSalazar

Смежные вопросы