2010-02-26 2 views
1

В шаблоне с шаблоном MVC, где наиболее логично будет отображаться модуль скрининга экрана? В модели или контроллере? Или это полностью вне этой картины?В структуре с шаблоном MVC, где должен быть размещен экран-очищающий модуль?

+0

Какова роль экранного скребка в вашем веб-приложении? – anshul

+0

Роль скребка - сбор данных. –

ответ

2

Вы можете назвать это так, как если бы вы создали модель, чтобы вести себя как одна. Тогда он может быть легко использован в контроллере:

def update 
    @company = Company.find(params[:id]) 

    @scraper = Scraper.find(:page => some_url, :method => :rip) 

    @scraper.product_details.each do |params| 
    @company.products.create(params) 
    end 
end 

Это всегда удобно, когда вы разрабатываете выходной формат вашего скребка, чтобы быть совместимым с каким-либо другим объектом, например, как отображение столбцов вашего постоянного хранения.

Это часто удобно иметь «похожие на модель» объекты. В этом случае вы можете думать о скребке как интерфейсе к другому веб-сайту, а не к базе данных, и в этом отношении он не похож на ActiveResource. Существует не правило, что модель должна быть построена на основе ActiveRecord.

0

В некотором смысле, экранный скребок является пользователем приложения - я думаю, что это будет часть вне MVC, которая взаимодействует с контроллером, точно так же, как веб-страница отправляет информацию контроллеру. Это упростит перенос веб-страницы, если интерфейс изменится.

0

Я предполагаю, что скребок используется только для сбора данных.

Если данные очищены и сохранены, этот процесс не просто попадает ни в MV, ни в C. Вы можете запустить этот процесс утилизации как задание cron с интервалами, которые вы определяете, хранить данные и затем определять модели для доступа к данным ,

Я бы не рекомендовал вызывать процесс утилизации каждый раз, когда контроллер запрашивает модель, если только вы не кешируете запрос на скрап.

РЕДАКТИРОВАТЬ:

хрон может быть контроллером, но не публично вызываемым.

0

Это зависит от того, как вы планируете использовать скребок. Если у вас появится пользовательский интерфейс, на который вы нажимаете кнопку, чтобы очистить экран, то он будет находиться во всех трех (M, V и C). Если это будет фоновый процесс (как упоминалось ранее), он должен быть в M и C.