2012-01-22 17 views
8

Estoy tratando de agregar dos campos de archivos adjuntos diferentes. La migración falla si la ejecuto usando bundler o sin ella. (bundle exec rake db: migrar o simplemente rakear db: migrar).¿Por qué falla db: migrate cuando intento agregar campos de archivos adjuntos para clip?

== AddDiagramToQuestion: migrating =========================================== 
-- change_table(:questions) 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

undefined method `has_attached_file' for #<ActiveRecord::ConnectionAdapters::Table:0x0000012b003b20> 
/Users/kboon/Documents/workspace/quiztaker/db/migrate/20111213182927_add_diagram_to_question.rb:6:in `block in up' 
/Users/kboon/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:244:in `change_table' 

La migración tiene el siguiente aspecto:

class AddDiagramToAnswer < ActiveRecord::Migration 
    def self.up 
    change_table :answers do |t| 
     t.has_attached_file :diagram 
    end 
    end 

    def self.down 
    drop_attached_file :answers, :diagram 
    end 
end 

El modelo también hace referencia a los métodos añadidos por clip y la aplicación funciona muy bien así que no es un clip que no está instalado en absoluto. Incluso intenté agregar "clip" obligatorio a la migración, pero eso no ayudó en absoluto.

+4

es la gema del clip en su 'Gemfile'? – davidb

+0

Sí, debería haberlo dicho explícitamente. has_attached_file también funciona bien en mis modelos –

+0

¿qué versión de paperclip estás usando? –

Respuesta

10

La migración que se creó para mí ya no usa la terminología t.has_attached_file, realmente agrega las columnas explícitamente. La migración se crean ejecutando:

rails generate paperclip Answer diagram 

Salida del ejemplo here.

+0

Esto es lo que terminé haciendo aunque la documentación todavía usa el método has_attached_file. –

2

Esto funcionó para mí

def change 
    create_table :some_table do |t| 
    t.attachment :avatar 
    t.timestamps 
    end 
end 
0

archivo de migración se debe ver como

class AddDiagramToAnswer < ActiveRecord::Migration 
    def self.up 
    **add_attachment** :answers, :diagram 
    end 

    def self.down 
    **remove_attachment** :answers, :diagram 
    end 
end 

o

class AddDiagramToAnswer < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.**attachment** :avatar 
    end 
    end 
end 

has_attached_file se utiliza en model.rb (answer.rb en su aplicación)

con rieles 5

Cuestiones relacionadas