Rails: уничтожение ассоциации finder_sql - PullRequest
0 голосов
/ 07 января 2011

У меня есть модельное отношение в Rails 3.0.3, в котором используется :finder_sql, например, (для удобства чтения SQL опущен):

has_many :permissions, :finder_sql => 'SELECT * FROM ...', :readonly => false

Список этих разрешений работает, просто найдите, но когда я пытаюсь уничтожить их, я не могу.

В консоли Rails я могу вызвать .destroy, и он возвращает объект. Если я тогда позвоню .destroyed?, он вернет истину. Но это на самом деле не удаляет строку таблицы.

Как я могу уничтожить этот связанный объект? Я добавил :readonly => false выше как попытку решить эту проблему, но пока не повезло.

1 Ответ

0 голосов
/ 07 января 2011

Разобрался. Сам SQL был проблемой. Я сделал это:

'Select * FROM `permissions` INNER JOIN ...'

Поскольку я выбрал * ИЗ нескольких таблиц, каждая из которых имеет столбец id, MySQL вернул атрибут id последней таблицы.

Решение было сделать это:

'SELECT `permissions`.* FROM `permissions` INNER JOIN ...'

Теперь я получаю атрибуты только из самой таблицы разрешений, поэтому у меня правильный идентификатор, и удаление успешно выполнено.

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