2012-12-29 4 views
0

Я настроен на то, чтобы получить этот алгоритм (если вы хотите назвать это так), выясненный в выходные, и я думаю, что мне понадобится помощь cron jobs или, может быть, clockwork.Ruby algorithm help using cron jobs

Вот моя логика:

При добавлении книги, он должен быть застрял в «очереди линии» или «статус очереди» и будет «опубликована» только в верхней части недели. В верхней части недели, если ни одна книга не была «поставлена ​​в очередь», добавьте новую «опубликованную» книгу &, чтобы снова открыть форму (форма будет скрыта, как только книга будет поставлена ​​в очередь для публикации следующего). Когда я говорю о верхней части недели, я имею в виду, что книга должна публиковаться каждые 7 дней, начиная с даты создания учетной записи пользователя.

Чтобы создать некоторый фон, я создаю приложение, в котором пользователям рекомендуется читать одну книгу в неделю в течение 2013 года (да, эта вещь должна быть запущена в понедельник!). Они могут добавить книгу, которую они собираются прочитать на следующей неделе, и изменить статус этой книги, чтобы «прочитать», прочитав ее. Если они не изменят статус на «чтение» в течение 7 дней после его добавления, он автоматически перемещается вниз по строке и отображается как «непрочитанный», а новая пустая книга добавляется (как то, что я объяснял выше).

Полное добавление книг и изменение статуса для чтения/непрочитанных уже завершено. Я просто ищу помощь в создании 7-дневной добавочной книги и «очереди очереди».

Некоторые прозрение в мой код:

У меня есть books контроллер & модель, belongs_to пользователя. Моя пользовательская модель has_many книг.

Я добавляю и показываю книги пользователей через пользователя show вид.

Я уверен, что есть вещи, которые я оставляю, что поможет лучше объяснить мою среду, так что просто спросите меня :) Спасибо!

+1

Пожалуйста, улучшите свой вопрос, разместив код [правильно отформатированный] (http://superuser.com/editing-help). Кроме того, отправьте любое фактическое сообщение об ошибке, которое вы получили, и какие шаги вы предприняли до сих пор для исследования или решения проблемы. –

+0

Я выносливый код. Не знал, что это не было «правильно отформатировано». Я ищу более высокий уровень ответа, чем прямой «вот код для этого» –

ответ

0

Я не думаю, что вам нужна работа на хроном для этого.

Что бы я сделал, это добавить статус в каждую книгу чтения/непрочитанных. А затем напишите метод в модели, который проверяет загрузку страницы и изменяет данные представления или контроллера для отображения.

У Rails/Ruby есть хорошие помощники по дате/времени, где вы можете указать date1 < = 7.days.ago.

Есть ли причина, почему такой подход не будет работать?

+0

Да, у меня уже есть статус для чтения/непрочитанных. Не уверен, могу ли я сказать 7 дней назад, потому что, если пользователь добавит книгу в середине недели? И я думаю, что мне все еще нужен способ добавить книгу, если вы не «поставили в очередь», что было бы сделано через работу с хроном? –

+0

В каждой книге Rails имеет поля created_at и modified_at. Вы можете использовать их. Вы также можете создать свои собственные, если они не сработают для вас. –

+0

Хорошо, понимая, что это неправильный синтаксис, я мог бы сделать что-то подобное, не так ли? '' '<% if @ user.books.created_at> @ user.books.count * 7%> \t \t <% else %> \t <% end %> '' 'Что в основном говорит, что если в книге был создан перед другими книгами, показывая его как поставленный в очередь. Но тогда нет, это неправильно, потому что, если бы я хотел сделать то, что мне нужно было сделать, это было бы назвать '' 'последним'''. Argh! –