2012-01-22 8 views
8

Sto tentando di aggiungere due campi allegati diversi. La migrazione ha esito negativo se la eseguo tramite bundler o senza. (bundle exec rake db: migrazione o solo rake db: migrate).Perché db: migrazione fallisce quando provo ad aggiungere campi allegati per paperclip?

== 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 migrazione si presenta così:

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 

Il modello fa riferimento anche metodi aggiunti dal graffetta e l'applicazione funziona bene quindi non è che la graffetta non è installato affatto. Ho anche provato ad aggiungere "paperclip" alla migrazione, ma questo non mi è stato di alcun aiuto.

+4

è la gemma di graffetta nel tuo 'Gemfile'? – davidb

+0

Sì, avrei dovuto dirlo esplicitamente. has_attached_file funziona bene anche nei miei modelli –

+0

quale versione di paperclip stai usando? –

risposta

10

La migrazione che è stata creata per me non utilizza più la terminologia t.has_attached_file, in realtà aggiunge le colonne esplicitamente. La migrazione sarebbe stato creato da corsa:

rails generate paperclip Answer diagram 

Partenza l'esempio here.

+0

Questo è quello che ho fatto, anche se la documentazione usa ancora il metodo has_attached_file. –

2

questo ha lavorato per me

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

file di migrazione deve essere assomigliare

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 viene utilizzato in model.rb (answer.rb nella tua app)

con rotaie 5

Problemi correlati