Ruby On Rails in UA Icon_home Главная Add to bookmarks Translate translate Profile Войти
Регистрация Форум Блоги Пользователи Список джемов Rails проекты      Поиск   

Ruby On Rails in UA/Программирование на ROR/Логирование и игнорирование неверных артибутов при попытке создать новую запись в ActiveRecord модели

2008-06-06 20:18:18 Ответить  
admin
Ruslan Voloshin
Адрес: odessa
Сообщений: 1294
Регистр: 2007-03-13
его блог 40 сообщ.
Логирование и игнорирование неверных артибутов при попытке создать новую запись в ActiveRecord модели
  •  
Проблемма

При создании объекта модели
user = User.new(params[:user])
и передаче неверных параметров, скажем что злонамеренный пользователь добавить еще
params[:user][:not_defined_attribete] = 'dddd'

В стандартном случае произойдет вылет

Решение
Изменяем инициализацию сласса ActiveRecord::Base
а именно добавляем филтр для несуществующих атрибутов, чистим их и логируем а дальше все как обычно.

application.rb
------------
Занимаюсь вебом и продвижением сайтов.
2008-06-08 22:30:10 Ответить  
admin
Ruslan Voloshin
Адрес: odessa
Сообщений: 1294
Регистр: 2007-03-13
его блог 40 сообщ.
RE: Логирование и игнорирование неверных артибутов при попытке создать новую запись в ActiveRecord модели
  •  
Выше указанный пример оказался не жиснеспособным на все 100 процентов,
по сему родился следущий кусок который всетаки фильтрует входящие неверные параметры при инициализации нового объекта ActiveRecord::Base

app/lib/core_ext/active_record.rb



Результаты передачи неверный параметров из консоли


В логах


И вылета не происходит при передаче неверного параметра их строки в браузере
------------
Занимаюсь вебом и продвижением сайтов.
2008-06-05 16:30:02 Ответить  
programmer2006
Igor Igor
Адрес:
Сообщений: 101
Регистр: 2007-10-23
его блог 0 сообщ.
RE: Логирование и игнорирование неверных артибутов при попытке создать новую запись в ActiveRecord модели
  •  
Спасибо,за отличное решение.
Назадназад Новыйновый Ответитьответить
Ключевые слова:
Гости: 294 Онлайн: 0
Rambler's Top100
О проекте по всем вопросам обращайтесь на support
Rubyclub.com.ua Copyright © 2007 - 2008