Ruby on rails 如何从另一个不同的ActiveRecord模型构建一个ActiveRecord模型?

Ruby on rails 如何从另一个不同的ActiveRecord模型构建一个ActiveRecord模型?,ruby-on-rails,activerecord,constructor,Ruby On Rails,Activerecord,Constructor,我有两个ActiveRecord模型,CartItem和OrderItem。CartItem是动态的,包含与各种其他模型的关联,而OrderItem是静态的,表示过去的状态。两者有一些共同的属性,一些不同的属性,还有一些是另一个的功能。OrderItems始终仅从CartItems创建,因此从逻辑上看,我应该通过将CartItem传递给构造函数来构造OrderItem。我知道我可以构造一个空的OrderItem,然后使用一个单独的方法来设置它与CartItem的属性,但这似乎与这个概念不符。执行

我有两个ActiveRecord模型,CartItem和OrderItem。CartItem是动态的,包含与各种其他模型的关联,而OrderItem是静态的,表示过去的状态。两者有一些共同的属性,一些不同的属性,还有一些是另一个的功能。OrderItems始终仅从CartItems创建,因此从逻辑上看,我应该通过将CartItem传递给构造函数来构造OrderItem。我知道我可以构造一个空的OrderItem,然后使用一个单独的方法来设置它与CartItem的属性,但这似乎与这个概念不符。执行此操作的适当方法是什么?

您可以按照中的建议,使用散列作为参数定义OrderItem initialize方法,然后在散列中传递所需的CartItems属性以创建OrderItem。

当您说“在散列中传递所需的CartItems属性”时您的意思是CartItems类需要知道OrderItems认为哪些属性相关吗?这似乎不是很好的封装。我本以为只传递CartItem是合适的,但它不能使用与单独方法相同的代码。它告诉我'NoMethodError(当你没有预料到它时,你有一个nil对象!你可能期望ActiveRecord::Base的一个实例。计算nil.delete时出错):'但是我没有调用delete,也没有看到任何nil对象。