2012-01-22 12 views
8

Próbuję dodać dwa różne pola załączników. Migracja przebiega niepomyślnie, uruchamiam ją za pomocą pakietu bundler lub bez niego. (pakiet exec rake db: migracja lub po prostu rake db: migrate).Dlaczego funkcja db: migrate kończy się niepowodzeniem, gdy próbuję dodać pola załącznika do spinacza?

== 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' 

Migracja wygląda następująco:

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 

Model odwołuje się też metody dodane przez spinacza i aplikacja działa poprawnie, więc nie jest tak spinacza nie jest zainstalowany na wszystkich. Próbowałem nawet dodać "spinacz papieru" do migracji, ale to wcale nie pomogło.

+4

to klejnot spinacza w twoim 'Gemfile'? – davidb

+0

Tak, powinienem był to wyraźnie powiedzieć. has_attached_file działa dobrze w moich modelach również –

+0

jakiej wersji spinacza używasz? –

Odpowiedz

10

Migracja, która została utworzona dla mnie, nie używa już terminologii t.has_attached_file, w rzeczywistości dodaje kolumny bezpośrednio. Migracja zostanie utworzona przez uruchomienie:

rails generate paperclip Answer diagram 

Zobacz przykład here.

+0

Tak właśnie zrobiłem, chociaż dokumentacja nadal używa metody has_attached_file. –

2

ten pracował dla mnie

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

plik migracji należy wyglądać

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

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

lub

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

has_attached_file jest stosowany w model.rb (answer.rb w swojej aplikacji)

z szynami 5

Powiązane problemy