Ответ 1
Чрезвычайно сложно сделать это элегантно в Rails. Это самый чистый способ, который я нашел:
post.association(:comments).add_to_target(comment)
В 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
.
Чрезвычайно сложно сделать это элегантно в Rails. Это самый чистый способ, который я нашел:
post.association(:comments).add_to_target(comment)
Вы можете сделать:
class Post < ActiveRecord::Base
has_many: comments, autosave: false
...
end
Затем < будет просто добавлять и не сохранять.