我进行了搜索和搜索,我以为我已经征服了,但这个问题仍然让我感到悲伤。
我有2个模型LineItems和Orders。 LineItems被添加到购物车模型中,这是一个购物车。 LineItems是暂时的,因为我只想在购物车中检查并付款。由于LineItem是临时的,我想在签出时将大多数属性从LineItem传递给New Order。如果LineItem属性的命名与Order属性不同而我只想传递一些参数,我该怎么做?
我也不确定哪种关系最好。
感谢您的帮助!
使用rails 4.0和ruby 2.0
答案 0 :(得分:2)
我相信这里的关系不会奏效。正如您所提到的,LineItem是临时的。因此,任何关系都将毫无用处,只要从LineItem删除记录,您将无法从订单访问。
所以,你的问题归结为:“如何将一些参数从一个模型复制到另一个模型”。
我认为最直接的方法是执行以下操作:
@order.assign_attributes(:attr1 => @lineitem.attr2, :attr2 => @lineitem.attr3)
如果你有很多属性,你可以创建一个哈希,它将映射@lineitem和@order中的属性名称。它会像
@mapping = { "attr1" => "attr2", "attr3" => "attr4" }
@mapping.each { |lineitem_attr_name, order_attr_name|
@order.send("#{order_attr_name}=".to_sym, lineitem_attr_name.send(lineitem_attr_name.to_sym))
}