![]() |
|
![]() ![]() ![]() |
|
rax |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 4.6.2004 Где: Егорьевск Репутация: нет Всего: 1 |
Доброго дня
Полазил по документации и гуглу, ничего не нашел Есть ActiveRecord объект, в котором заполнены некоторые атрибуты, а некоторые не заполнены Объект записывается в сессию и на следующем шаге сервиса добавляются новые данные, и на последнем шаге делается save Есть функция update у массивов, вот примерно тоже самое мне нужно сделать для атрибутов ActiveRecord можно ли? Спасибо |
|||
|
||||
shine |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 20.10.2006 Репутация: 3 Всего: 5 |
Функция update есть у хэшей а не у массивов. Для ActiveRecord update_atributes подойдет?
--------------------
An investment in knowledge always pays the best interest. © Benjamin Franklin |
|||
|
||||
rax |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 4.6.2004 Где: Егорьевск Репутация: нет Всего: 1 |
Да, у хэшей.
Насколько я знаю update_atributes будет пытаться занести значения в базу и спотыкнется, потому что в моем случае атрибута id еще нет Мне же нужно все сделать лишь на уровне параметров класса Это сообщение отредактировал(а) rax - 19.10.2010, 18:13 |
|||
|
||||
solenko |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 1 Всего: 67 |
Стандартной такой не знаюю, но! Это же ruby )
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
rax |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 4.6.2004 Где: Егорьевск Репутация: нет Всего: 1 |
Так оно понятно, что если атрибуты уже есть в хэше, то обновить объект не составит труда.
Вся фигня в том, как атрибуты перегнать в хэш, при условии что количество этих атрибутов нам неизвестно и нет возможности сделать это вручную, как у вас в 13-ой строке |
|||
|
||||
solenko |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 1 Всего: 67 |
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
||||
|
|||||
source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Не правильно, это же Rails, надо читать код. Вот, кстати:
Ни на какие мысли не наводит? Зачем огород городить, когда всё проще некуда "из коробки"
Зачем так извращаться? В сессию объекты записывать - это вообще ни в какие ворота. Создай сразу объект в БД и заполняй аттрибуты сколько влезет. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
solenko |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 1 Всего: 67 |
Наводит на мысль, что на втором шаге прийдется делать как минимум obj.attributes.merge!(params[:object]) Ну и на мою write_attributes, скорее всего прийдется навешивать еще вызов чего-то вроде valid_for_attributes?(*attrs) -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Ну надо же, какой упорный велосипедостроитель... ![]() Какая религия тебе запрещает посмотреть на код метода ActiveRecord::Base#attributes=() ? Твой write_attributes до стандартного attributes= ещё пилить и пилить... вот только какой смысл? -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
rax |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 4.6.2004 Где: Егорьевск Репутация: нет Всего: 1 |
Если человек забросит заполнение на первом шаге, в базе будет куча мусора
|
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Ну это как сказать, многие считают очень ценной информацию о том на каком шаге пользователи забрасывают некий процесс, гораздо более ценной, чем лишние 5-10 Мб места в БД. Хотя если твой случай никак не связан с бизнесом, и пользователям не предоставляется возможность возобновить процесс заполнения(что в большинстве случаев будет багом юзабилити), то можно и не сохранять такие записи. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
rax |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 4.6.2004 Где: Егорьевск Репутация: нет Всего: 1 |
Разобрался. Есть @foo.attributes.keys и Foo.column_names. Дальше update
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Ruby: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |