Проблема с таблицей ассоциаций Acl9. - PullRequest
1 голос
/ 24 февраля 2011

Я пытаюсь выяснить, почему столбец create_at таблицы role_users, похоже, занимает пользовательский столбец при назначении роли пользователю. У него не должно быть своей даты создания? Любая помощь?

ruby-1.8.7-p174> Time.now
=> Чт, 24 февраля 15:50:11 +0100 2011
ruby-1.8.7-p174> User.last.has_role! «Инсталлятор»
Пользовательская нагрузка (0,5 мс) SELECT * ИЗ "пользователей" ORDER BY users.id DESC LIMIT 1
Загрузка страны (0,2 мс) ВЫБРАТЬ * ИЗ "стран" ГДЕ ("страны". "Id" = 106)
Загрузка ролей (0,2 мс) SELECT * FROM "role" WHERE (name = 'installer' и authorizable_type IS NULL и authorizable_id IS NULL) LIMIT 1
Загрузка роли (0,1 мс) ВЫБЕРИТЕ «role" .id FROM "role" INNER JOIN "role_users" ON "role" .id = "role_users" .role_id WHERE ("role". "Id" = 2) AND ("role_users") .user_id = 31) LIMIT 1
SQL (0,3 мс) INSERT INTO "role_users" ("made_at", "updated_at", "role_id", "user_id") VALUES (' 2010-09-16 14: 11: 24 ', ' 2010-09-16 14: 11: 24 ', 2, 31)
Загрузка ролей (0,5 мс) ВЫБРАТЬ * ИЗ "Роли" ВНУТРЕННЕЕ СОЕДИНЕНИЕ "role_users" ON "role" .id = "role_users" .role_id WHERE ("role_users" .user_id = 31)
=> [# Идентификатор роли: 2, имя: «installer», authorizable_type: nil, authorizable_id: nil, creation_at: «2010-09-16 14:11:24», updated_at: «2010-09-16 14:11: 24" >]
ruby-1.8.7-p174> Role.find_by_name («установщик»)
Загрузка ролей (0,3 мс) SELECT * FROM "role" WHERE ("role". "Name" = 'installer') LIMIT 1
=> # Идентификатор роли: 2, имя: "installer", authorizable_type: nil, authorizable_id: nil, creation_at: " 2010-09-16 14: 11: 24 ", updated_at: "2010-09- 16 14:11:24 ">

Ответы [ 2 ]

1 голос
/ 28 июня 2011

таблица соединения habtm, используемая acl9, может не иметь дополнительных атрибутов.

, если в таблице соединения есть атрибуты create_at или updated_at, ActiveRecord заполняет это значение значением связанной таблицы (роль в вашем случае),

Если вы хотите эту функциональность, вам нужно отредактировать гем и добавить к отношениям фильтр обратного вызова after_add, посмотрите также на строку 41 этого файла

, updated_atбесполезен, потому что строка в таблице соединений базы данных была создана и удалена, а не обновлена ​​...

надеюсь, что это может помочь, извините за мой английский.

0 голосов
/ 23 января 2015

Это действительно было вызвано ошибкой в ​​документах acl9 (потому что таблица соединения habtm не должна иметь временных меток).Я исправил документы , и в acl9 1.2 теперь есть генератор для этой миграции:)

...