【问题标题】:Rails 4: Append to a "has_many" relation without saving to DBRails 4:附加到“has_many”关系而不保存到数据库
【发布时间】:2014-01-17 15:14:22
【问题描述】:

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

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

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

【问题讨论】:

  • 您的意思是,您需要附加评论,然后对父对象执行一些操作,因此您试图避免立即保留新评论?

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


【解决方案1】:

在 Rails 中优雅地做到这一点非常困难。这是我发现的最干净的方式:

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

【讨论】:

  • 第二种方式:post.cmets.proxy_association.add_to_target(comment)
【解决方案2】:

你可以这样做:

class Post < ActiveRecord::Base

  has_many: comments, autosave: false

  ...
end

然后

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    相关资源
    最近更新 更多