Подтвердить что ты не робот

Rails 4: добавьте отношение "has_many" без сохранения в DB

В Rails 3 можно делать такие вещи, как some_post.comments.append(some_comment), где некоторые сообщения - это экземпляр модели, которая имеет комментарии "has_many".

Проблема, с которой я столкнулась в Rails 4, заключается в том, что метод append теперь сохраняет DB (например, push и <<)), и мне нужно просто "добавить", не сохраняя добавленный объект в БД.

Как мы достигаем этого в Rails 4? Я не могу использовать some_post.comments.build(some_comment.attributes), потому что мне нужно сохранить другие отношения, уже присутствующие в экземпляре some_comment.

4b9b3361

Ответ 1

Чрезвычайно сложно сделать это элегантно в Rails. Это самый чистый способ, который я нашел:

post.association(:comments).add_to_target(comment)

Ответ 2

Вы можете сделать:

class Post < ActiveRecord::Base

  has_many: comments, autosave: false

  ...
end

Затем < будет просто добавлять и не сохранять.