使用deep_cloneable gem时,如何从关联中排除属性?

时间:2014-03-04 16:11:20

标签: ruby-on-rails deep-copy cloneable

我正在使用deep_cloneable gem。我可以对关联进行深度复制,也可以从父对象中排除属性。但有没有办法从关联中排除属性?

1 个答案:

答案 0 :(得分:2)

看起来您可以明确地从父级或关联或两者中排除属性。以下是直接来自文档的示例:

pirate.dup :include => :parrot, :except => [:name, { :parrot => [:name] }]

对于您的情况,您将要离开:父母的名字,如下所示:

pirate.dup :include => :parrot, :except => [{ :parrot => [:name] }]

除此之外,您还可以包含仅来自关联的属性,如果您想使用白名单技术,这可以满足您的需求。这是直接来自文档的示例:

pirate.dup :include => :parrot, :only => [:name, { :parrot => [:name] }]

您可能希望为白名单做些什么:

pirate.dup :include => :parrot, :only => [{ :parrot => [:name] }]

希望这有帮助!