【发布时间】:2012-11-02 14:36:15
【问题描述】:
是否可以在 Rails 中将关联添加到现有记录而不立即将此更改提交到数据库? 例如。如果我有 Post has_many :tags
post.tags << Tag.first
这将立即提交到数据库。我尝试了其他方法而不是
post.tags.build name: "whatever"
我认为这在 Rails 中有点不一致,在某些情况下,有一个选项会很有用。
换句话说,我想要
post.tags << Tag.first # don't hit the DB here!
post.save # hit the DB here!
【问题讨论】:
-
在父对象上使用
build有什么问题?您能否更详细地解释您认为不一致的地方和/或您希望它在理想世界中的样子?build似乎是为此目的“构建”(如果你会原谅双关语) - 添加一个子/关联对象而不立即提交它。 -
构建工作正常,但在尝试将关联添加到现有记录时却不行。我没有看到类似的方法来构建以将关联添加到现有记录(我的意思是这里的现有子记录)。如果现在更清楚,我更新了这个问题。
-
我想理想情况下不破坏现有代码我想要类似 post.tags.build id: Tag.first.id 的东西。想不出更好的语义,因为
-
不,你不能拥有你想要的语法。
<<提交更改 -
这不是我想要的语法,而是功能。我知道
标签: ruby-on-rails ruby-on-rails-3