Rails 4:附加到“has_many”关系而不保存到DB

时间:2014-01-17 15:14:22

标签: ruby activerecord ruby-on-rails-4

在Rails 3中,可以执行some_post.comments.append(some_comment)之类的操作,其中一些帖子是“has_many”注释的模型实例。

我在Rails 4中遇到的问题是append方法现在保存到数据库(如push<<),我需要“追加”而不保存附加到DB的对象。

我们如何在Rails 4中实现这一目标?我无法使用some_post.comments.build(some_comment.attributes),因为我需要保留some_comment实例中已存在的其他关系。

2 个答案:

答案 0 :(得分:40)

在Rails中优雅地执行此操作非常困难。这是我发现的最干净的方式:

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

答案 1 :(得分:-1)

你可以这样做:

class Post < ActiveRecord::Base

  has_many: comments, autosave: false

  ...
end

然后&lt;&lt;只会附加而不是保存。