ruby-on-rails – Rails:使用“attributes”方法将属性从对象复制到另一个

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails:使用“attributes”方法将属性从对象复制到另一个前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
让模型报价有属性[价格,描述]

让模型发票具有属性[价格,描述,优先级]

使用{price:10,description:’lamp’,priority:10}的模型发票中的一个对象发票

invoice = {price: 10,description: 'lamp',priority: 10}

假设我想将发票属性复制到新的报价.

quote = Quote.new(invoice.attributes)

这引发了模型报价中不存在优先级的错误.

如何将发票属性复制到新的报价,但只能将报价的属性复制?

解决方法

你可以 select只有Quote的属性
Quote.new(invoice.attributes.select{ |key,_| Quote.attribute_names.include? key })

As noted by @aceofspades(但不是动态解决方案),您也可以使用ActiveSupport的slice

Quote.new(invoice.attributes.slice(Quote.attribute_names))

猜你在找的Ruby相关文章