Rails 3 - HABTM не обновляет таблицу соединений с << - PullRequest
2 голосов
/ 19 октября 2010

Это меня убивает ... При попытке добавить ключ к лайку так:

category.site_ids << 1
category.save

Не сохраняет. Но при полной перезаписи это работает:

category.site_ids = [1]
category.save

Что мне здесь не хватает?

1 Ответ

3 голосов
/ 19 октября 2010

Простой ответ: рельсы его не поддерживают :) Это может звучать как умный ответ, но позвольте мне объяснить. Во-первых, вот документация .

Мы хотим думать, что category.site_ids - это обычный массив, но это не так. Чтобы вы могли обращаться с ним как с массивом и иметь всю магию базы данных (созданные, обновленные, уничтоженные записи) за кулисами, разработчики рельсов должны переопределить методы массива. Массивы в ruby ​​имеют несколько десятков методов, и создание ассоциаций коллекций (has many, habtm) для всех из них будет нецелесообразно.

Теперь вы можете сделать category.sites << site, и это работает. Так что нет никаких технических проблем с тем же самым для идентификаторов. Это может быть выбор, или, возможно, никто еще не закодировал его:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...