ruby query Rails 4: se agrega a una relación "has_many" sin guardar en DB




rails sql query (2)

En Rails 3 uno puede hacer cosas como some_post.comments.append(some_comment) donde algunas publicaciones son una instancia de un modelo que "tiene muchos comentarios".

El problema que estoy enfrentando en Rails 4 es que el método de append ahora se guarda en DB (como push y << ) y necesito simplemente "anexar" sin guardar el objeto adjunto a la base de datos.

¿Cómo logramos eso en Rails 4? No puedo usar some_post.comments.build(some_comment.attributes) porque necesito preservar las otras relaciones ya presentes en la instancia some_comment .


Podrías hacerlo:

class Post < ActiveRecord::Base

  has_many: comments, autosave: false

  ...
end

Entonces << solo anexará y no guardará.


Es extrañamente difícil hacerlo elegantemente en Rails. Esta es la forma más limpia que he encontrado:

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




ruby-on-rails-4