Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Ruby: Общие вопросы > Получить все атрибуты |
Автор: rax 19.10.2010, 15:58 |
Доброго дня Полазил по документации и гуглу, ничего не нашел Есть ActiveRecord объект, в котором заполнены некоторые атрибуты, а некоторые не заполнены Объект записывается в сессию и на следующем шаге сервиса добавляются новые данные, и на последнем шаге делается save Есть функция update у массивов, вот примерно тоже самое мне нужно сделать для атрибутов ActiveRecord можно ли? Спасибо |
Автор: shine 19.10.2010, 17:29 |
Функция update есть у хэшей а не у массивов. Для ActiveRecord update_atributes подойдет? |
Автор: rax 19.10.2010, 18:13 |
Да, у хэшей. Насколько я знаю update_atributes будет пытаться занести значения в базу и спотыкнется, потому что в моем случае атрибута id еще нет Мне же нужно все сделать лишь на уровне параметров класса |
Автор: solenko 19.10.2010, 18:26 | ||
Стандартной такой не знаюю, но! Это же ruby )
|
Автор: rax 20.10.2010, 09:37 |
Так оно понятно, что если атрибуты уже есть в хэше, то обновить объект не составит труда. Вся фигня в том, как атрибуты перегнать в хэш, при условии что количество этих атрибутов нам неизвестно и нет возможности сделать это вручную, как у вас в 13-ой строке |
Автор: solenko 20.10.2010, 14:01 | ||||
|
Автор: solenko 21.10.2010, 08:45 | ||
Наводит на мысль, что на втором шаге прийдется делать как минимум obj.attributes.merge!(params[:object]) Ну и на мою write_attributes, скорее всего прийдется навешивать еще вызов чего-то вроде valid_for_attributes?(*attrs) |
Автор: source777 21.10.2010, 18:39 | ||
Ну надо же, какой упорный велосипедостроитель... ![]() Какая религия тебе запрещает посмотреть на код метода ActiveRecord::Base#attributes=() ? Твой write_attributes до стандартного attributes= ещё пилить и пилить... вот только какой смысл? |
Автор: rax 25.10.2010, 13:40 |
Если человек забросит заполнение на первом шаге, в базе будет куча мусора |
Автор: source777 25.10.2010, 17:26 | ||
Ну это как сказать, многие считают очень ценной информацию о том на каком шаге пользователи забрасывают некий процесс, гораздо более ценной, чем лишние 5-10 Мб места в БД. Хотя если твой случай никак не связан с бизнесом, и пользователям не предоставляется возможность возобновить процесс заполнения(что в большинстве случаев будет багом юзабилити), то можно и не сохранять такие записи. |
Автор: rax 26.10.2010, 11:37 |
Разобрался. Есть @foo.attributes.keys и Foo.column_names. Дальше update |