В шаблонной структуре MVC где будет находиться модуль очистки экрана? - PullRequest
1 голос
/ 26 февраля 2010

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

Ответы [ 4 ]

2 голосов
/ 26 февраля 2010

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

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 голосов
/ 26 февраля 2010

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

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

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

EDIT:

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

0 голосов
/ 26 февраля 2010

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

0 голосов
/ 26 февраля 2010

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

...