删除重复对象中的所有关联

时间:2018-11-08 08:59:42

标签: ruby-on-rails associations

使用object_dup = object.dup复制对象时,将复制所有关联。

object_dup.foos == object.foos

我想复制/克隆object而不关联,或者在复制后删除所有关联。我想销毁object_dup上所有重复的关联。仅仅创建一个新的对象可能会更容易,但是重复使我摆脱了属性设置的麻烦。

有可能吗?

1 个答案:

答案 0 :(得分:1)

实际上,.dup方法不重复关联,它只是复制外键(父母)。

示例:

# Original
my_post = Post.first
=> #<Post id: 1, title: 'blabla', category_id: 10>

# Duplicate
my_post.dup
=> #<Post id: nil, title: 'blabla', category_id: 10>

# Have the same category_id (10)

我最好的复制方法,没有一些属性:

Post.new(my_post.attributes.slice('titles'))
=> #<Post id: nil, title: 'blabla', category_id: nil>

在这里,我们创建一个新的空Post,使用my_post.attributes获取原始帖子属性,并使用slice('title')仅分割我们想要的属性(接受倍数属性,示例:slice('title', 'content', 'tags')

.dup Documentation

.slice Documentation