2010-10-05 3 views
1

Контроллер ClientDocument.Метод экземпляра вызова из метода класса

def upload_document 
    ClientDocument.upload_client_document(params) 
end 

Модель ClientDocument.

метод класса ..

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 

метод Instance ..

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

Можно ли вызвать метод экземпляра из метода класса?

Прежде чем хранить в базе данных, я хочу переименовать имя файла.

Каков правильный способ решить эту проблему?

ответ

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

Позвонит ли он before_save и все обратные вызовы с помощью этого кода? Мне нужно хранить объект, например instance.save! или автоматически он будет хранить ?? –

+0

@krunal: Ничто не будет сохранено в приведенном выше коде. Если вы хотите сохранить объект, вызовите 'instance.save' в конце. – sepp2k

Смежные вопросы