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

Ruby on rails 使用deep_cloneable gem时,如何从关联中排除属性?,ruby-on-rails,deep-copy,cloneable,Ruby On Rails,Deep Copy,Cloneable,我用的是宝石。我可以对关联进行深度复制,也可以从父对象中排除属性。但是,有没有办法甚至从关联中排除属性?看起来您可以明确地从父级或关联或两者中排除属性。下面是一个直接来自文档的示例: pirate.dup :include => :parrot, :except => [:name, { :parrot => [:name] }] pirate.dup :include => :parrot, :only => [:name, { :parrot => [:

我用的是宝石。我可以对关联进行深度复制,也可以从父对象中排除属性。但是,有没有办法甚至从关联中排除属性?

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

pirate.dup :include => :parrot, :except => [:name, { :parrot => [:name] }]
pirate.dup :include => :parrot, :only => [:name, { :parrot => [:name] }]
对于您的情况,您需要像下面这样省去父对象的名称:

pirate.dup :include => :parrot, :except => [{ :parrot => [:name] }]
另外,您还可以只包含关联中的属性,如果您想使用白名单技术,这可以很好地满足您的需求。这是直接来自文档的示例:

pirate.dup :include => :parrot, :except => [:name, { :parrot => [:name] }]
pirate.dup :include => :parrot, :only => [:name, { :parrot => [:name] }]
对于白名单,您可能希望执行以下操作:

pirate.dup :include => :parrot, :only => [{ :parrot => [:name] }]
希望这有帮助