2010-08-26 3 views
1

J'utilise le plugin Paperclip pour gérer les téléchargements de fichiers dans mon application. Pour une raison quelconque dans le dernier jour ou le plug-in/modèle a cessé de fonctionner et retourne maintenant le message d'erreur suivant:Rails Le plugin Paperclip a cessé de fonctionner?

Paperclip::PaperclipError in DeliversController#create 

Asset model missing required attr_accessor for 'data_file_name' 

Pour autant que je sache, je ne l'ai pas touché le délivre contrôleur ou le plug-in paperclip .

Quelqu'un at-il déjà vu cette erreur, ou savez-vous comment je peux tracer le dernier changement sur le fichier qui est erreur?

Pour référence, le schéma db est comme suit:

# Create Delivers Table 
    create_table :delivers do |t| 
    t.column :caseref, :string 
    t.column :casesubject, :string 
    t.column :description, :text 
    t.column :document_file_name, :string 
    t.column :document_content_type, :string 
    t.column :document_file_size, :integer 
    t.column :document_updated_at, :datetime 
    t.timestamps 
    end 

    # Create Assets Table 
    create_table :assets do |t| 
    t.column :attachable_id, :integer 
    t.column :attachable_type, :string 
    t.column :date_file_name, :string 
    t.column :date_content_type, :string 
    t.column :date_file_size, :integer 
    t.column :attachings_count, :integer, :default => 0 
    t.column :created_at, :datetime 
    t.column :date_updated_at, :datetime 
    t.timestamps 
    end 

et le modèle de l'actif est la suivante:

class Asset < ActiveRecord::Base 
    has_attached_file :data, 
        :url => "/assets/:id", 
        :path => ":rails_root/assets/docs/:id/:style/:basename.:extension" 

    belongs_to :attachable, :polymorphic => true 

    def url(*args) 
    data.url(*args) 
    end 

    def name 
    data_file_name 
    end 

    def content_type 
    data_content_type 
    end 

    def file_size 
    data_file_size 
    end 
end 

Merci,

Danny

Répondre

2
# Create Assets Table 
t.column :date_file_name, :string 
      ^^^ 

class Asset < ActiveRecord::Base 
    has_attached_file :data, 
         ^^^ 

Voyez la différence? Une fois que c'est datE et que c'est datA

1

Juste essayer de le changer

#Create Assets Table 
create_table :assets do |t| 
    t.column :attachable_id, :integer 
    t.column :attachable_type, :string 
    t.column :date_file_name, :string 
    t.column :date_content_type, :string 
    t.column :date_file_size, :integer 
    t.column :attachings_count, :integer, :default => 0 
    t.column :created_at, :datetime 
    t.column :date_updated_at, :datetime 
    t.timestamps 
end 

à cette

# Create Assets Table 
create_table :assets do |t| 
    t.column :attachable_id, :integer 
    t.column :attachable_type, :string 
    t.column :data_file_name, :string 
    t.column :data_content_type, :string 
    t.column :data_file_size, :integer 
    t.column :attachings_count, :integer, :default => 0 
    t.column :created_at, :datetime 
    t.column :date_updated_at, :datetime 
    t.timestamps 
end 

Je pense que le message d'erreur indique que

modèle de l'actif manquant nécessaire attr_accessor pour 'data_file_name'

+0

J'ai créé une migration pour renommer les colonnes à data_X plutôt que date_X mais j'obtiens l'erreur suivante 'No such column: assets.date_file_name' - elle résout le problème localement (sur un nouveau base de données sqlite) mais pas sur le serveur live (mysql). – dannymcc

+1

@dannymcc: C'est une mauvaise idée de développer sur sqlite et d'utiliser mysql pour la production. Parce qu'il pourrait y avoir quelques problèmes avec les requêtes de construction personnalisées, je recommande fortement d'utiliser aussi mysql pour le développement – jigfox

+0

Salut Jigfox, j'ai besoin de mysql pour travailler sur mon Mac pour le développement local - j'ai échoué la dernière fois que j'ai essayé. :( – dannymcc

Questions connexes