#mysql #ruby-on-rails #ruby
#mysql #ruby-on-rails #ruby
Вопрос:
Как использовать грязный объект с именованной областью видимости?
Этот named_scope работает нормально.
named_scope :recently_tested, lambda{|test_id|
{
:conditions => ["test_id = ? and status = ?",test_id,PUBLISHED],
:order => "updated_at DESC"
}
}
Я хочу улучшить его. Что-то вроде
named_scope :recently_tested, lambda{|test_id|
{
:conditions => ["test_id = ? and status = ? and status_was = ?",test_id,PUBLISHED,PUBLISHED],
:order => "updated_at DESC"
}
}
Возможно ли использовать грязный объект с named_scope? Есть ли другие способы справиться с этим сценарием?
Ответ №1:
Вспомогательная функция изменения status_was
на самом деле не является полем в вашей базе данных.
При изменении объекта, changes
, changed?
и другие помощники, подобные вашему status_was
, остаются только до тех пор, пока вы не сохраните объект.
Если вы хотите, чтобы это сохранялось, вам придется добавить поле status_was в вашу модель и просто заполнить его в before_save
, например. Однако я бы не стал его вызывать status_was
, потому что вы бы перезаписали вспомогательную функцию.