2010-10-05 3 views
1

Controller ClientDocument.Méthode d'instance d'appel de la méthode de classe

def upload_document 
    ClientDocument.upload_client_document(params) 
end 

Modèle ClientDocument.

Méthode de classe ..

def self.upload_client_document(params) 
    self.new :uploaded_data => params[:Filedata],:client_id => params[:client_id] 
    rename_document_name(params) # Call instance method 
end 

méthode d'instance ..

def rename_document_name(params) 
    self.filename = "#{self.client.client_no}-#{self.filename}" 
end 

Est-il possible d'appeler méthode d'instance de méthode de classe?

Avant de stocker dans la base de données je veux renommer le nom de fichier.

Quelle est la bonne façon de résoudre ce problème? Appellera-t-il before_save et tous les callbacks avec ce code?

Répondre

4
def self.upload_client_document(params) 
    instance = self.new :uploaded_data => params[:Filedata],:client_id => params[:client_id] 
    instance.rename_document_name(params) # Call instance method 
    instance 
end 
+0

J'ai besoin de stocker un objet comme instance.save! ou automatiquement il va stocker ?? –

+0

@krunal: Rien ne sera stocké dans le code ci-dessus. Si vous voulez enregistrer l'objet, appelez 'instance.save' à la fin. – sepp2k

Questions connexes