![>](style_images/1/nav_m.gif)
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.56.59] |
![]() |
|
Сообщ.
#1
,
|
|
|
есть такие таблицы
![]() ![]() tree(id,name,parent_id,last_update) page(id,name,tree_id) вот когда редактируется или создается страница(page), нужно пробежаться по всем tree и обновить запись last_update могу сделать рекурсией, ничего сложного, но вот может в rails есть возможность автоматически, это делать? как например :dependent => :destroy. |
Сообщ.
#2
,
|
|
|
Если мне не изменяет память, то такое не возможно по причине того что сам SQL такого не поддерживает.
:dependent => :destroy. это просто аналог ON DELETE CASCADE для foreign key можно повесить callback на before_save, типа если last_update изменился, поменять его еще и у родителя тогда автоматом будет происходить |
Сообщ.
#3
,
|
|
|
Цитата XandoX @ можно повесить callback на before_save, типа если last_update изменился, поменять его еще и у родителя тогда автоматом будет происходить придется так и делать бежать рекурсивно по всем родителям(т.к. вложенность не ограниченная) и менять |
Сообщ.
#4
,
|
|
|
дык повесть такой же callback и в Tree и не надо будет специально переберать всех предков
|
Сообщ.
#5
,
|
|
|
Собственно такие вещи при помощи коллбэков и делаются. Можешь еще триггер написать для бд.
|
Сообщ.
#6
,
|
|
|
XandoX ага действительно, как то не додумался!!!
Мохнатый сделали бы, чегонить на уровне sql, думаю былоб не дурно |
Сообщ.
#7
,
|
|
|
в tree повешал коллбек, все работает, правда есть еще одна проблемка
есть еще одна таблица page_data(id,text) а в tree добавляется колонка где передается page_data_id так вот как мне правильнее в tree получить page_data_id? |
Сообщ.
#8
,
|
|
|
ну у тебя в Tree должно быть что-то has_one :page_date, а в PageData belongs_to :tree и тогда ты просто
можешь делать @tree.page_data.text |
Сообщ.
#9
,
|
|
|
XandoX так стоп, при создании новой записи page_data, нужно записать ее tree.page_data_id, а при этим способ, я id pagе_data в tree не получу.
|
Сообщ.
#10
,
|
|
|
Лично я вообще не понял последние пару-тройку сообщений
|
Сообщ.
#11
,
|
|
|
deil видимо, ее тока авторы и могут понимать=))))
|
Сообщ.
#12
,
|
|
|
Похоже на то
![]() |
Сообщ.
#13
,
|
|
|
Цитата Cepheus @ XandoX так стоп, при создании новой записи page_data, нужно записать ее tree.page_data_id, а при этим способ, я id pagе_data в tree не получу. ага, значит я тебя не правильно понял, я думал что у тебя уже есть там id, а тебе его туда записать надо. ок. а что бы их связать делать надо так @tree.build_page_data(:text => "bla-bla-bla") |
Сообщ.
#14
,
|
|
|
XandoX про связи, это верно!!!
Цитата XandoX @ по хорошему у тебя в page_data должен быть tree_id да есть, но в tree мне нужно еще и количесво page_id этого tree) вроде что то накидал=) |