У меня есть инструкция after_create, которая использует модель для создания вложенных атрибутов. Я фильтрую дни логических полей недели, но оператор if замораживает сервер (без ошибок).Оператор if и/или взлом сервера
Я включил соответствующий код ниже. Для claification, воскресенье через субботу являются булевыми полями в базе данных. Если я удалю все «и» предложения, которые фильтруют логические поля, форма завершается, но мне нужно отфильтровать даты, которые не выбраны в будние дни.
def new_visit
day = 0
dates = (visit_date_start .. visit_date_end).count + 1
while day <= dates
date = visit_date_start + day
day_of_week = date.strftime("%A").downcase
if (day_of_week == 'sunday' and sunday == true) or (day_of_week == 'monday' and monday == true) or (day_of_week == 'tuesday' and tuesday == true) or (day_of_week == 'wednesday' and wednesday == true) or (day_of_week == 'thursday' and thursday == true) or (day_of_week == 'friday' and friday == true) or (day_of_week == 'saturday' and saturday == true)
visits.create(:visit_price => visit_price, :visit_type => visit_type, :client_id => client_id, :visit_date => date)
day += 1
end
end
end
UPDATE
Я посмотрел в журналы, и один раз в то время, сервер выдает сообщение об ошибке, как показано ниже. Я верю, что это ошибка блокировки sqlite. Есть ли более глубокое понимание этого?
BusyException: cannot rollback transaction - SQL statements in progress: rollback transaction
Я думаю, что утверждение if - это красная селедка. Можете ли вы получить доступ к этим переменным за пределами этого метода, например. можете ли вы распечатать их или записать в файл журнала? –
Дни недели - это логические поля в базе данных, почему они не будут доступны? Я не уверен, как печатать или записывать их в файл журнала. – Shaun
Rails.logger.debug ("Суббота: # {суббота}"), например. Я понимаю, что они являются логическими в БД, я говорю, что я не думаю, что проблема «если» является проблемой, я подозреваю, что это выражение содержится в нем. Наиболее вероятными являются области базы данных. :) –