удалить запись из has_many без удаления из базы данных? (рельсы 2.3.5) - PullRequest
3 голосов
/ 17 февраля 2012

похоже, что delete & destroy оба удаляют запись из БД при работе с has_many.Есть ли в любом случае не делать этого.Другими словами, я хотел бы обрезать коллекцию has_mnay перед передачей ее методу, но я не хочу, чтобы мои изменения сохранялись в БД.При попытке сделать это на консоли, он, кажется, немедленно удаляется, когда я делаю

second_acct = users.accounts[1]
users.accounts.delete(second_acct)

. Мой вариант использования будет таким, как если бы я хотел передать только проверку учетных записей в метод, поэтому я хочу удалить эти учетные записиот пользователя.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

Как настроена ваша ассоциация?

collection.delete(object, …)
    Removes one or more objects from the collection by setting their foreign keys to NULL. Objects will be in addition destroyed if they’re associated with :dependent => :destroy, and deleted if they’re associated with :dependent => :delete_all.

Итак, если вы не хотите, чтобы ваши записи удалялись, а очищалась только ассоциация, удалите параметр :dependent => :destroy или :dependent => :delete_all.

0 голосов
/ 17 февраля 2012
second_acct = users.accounts[1]
second_acct.update_attribute(:user_id, nil)

Это должно работать.

Или это:

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