2010-06-04 5 views
1

Я не понимаю, ничего не может быть проще:Before_save фильтр не работает

class Visit < ActiveRecord::Base 
    def before_save 
    self.visited_on = "test" 
    end 
end 

Тем не менее, если я:

a = Visit.first 
a.user_id = 5 
a.save 
a.visited_on 
=> nil #WTF? 

Я знаю, что фильтры должны возвращать верно, но это один .. . В чем может быть проблема?

ответ

0

Вы уверены, что ваша запись фактически сохранена? Если user_id уже 5, то a.save не будет выполнять сохранение. Кроме того, если visit_on - дата и/или время, тогда «тест» может быть преобразован в ноль. Попробуйте использовать текущее время или что-то подобное.

+0

Простите, я уже делал эти тесты. visit_on - это: строка (я знаю, что это глупо, но это единственный способ, которым я нашел возможность использовать Visit.count (: all,: group =>: visited_on), чтобы получить результаты, сгруппированные по дням. И да, Я изменил пользователя (или любые другие атрибуты) на случайные значения, прежде чем пытаться сохранить. В журнале я вижу, что сохранение выполнено, но файл before_filter не выполняется. Очень странно! – Alain

0

Типичная ошибка глупого dev: у меня было два класса. Посетите мой код. Я не знаю, как это произошло, но удаление пустого класса устранило проблему. Извините за то, что потратил ваше время.

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