我在解决 Rails 4 中处理订单的常见问题时遇到了困难。我有一个模型对象“Offers”,然后被用户接受。这个动作“accept”需要创建一个新的 Order 对象,它保存与 Offer 对象相同的属性。根据我阅读的内容,我的代码应如下所示:
class User
has_many :offers
has_many :orders, through :offers
# ...
end
class Offer
belongs_to :user, dependent: :destroy
has_one: order
# ...
end
class Order
belongs_to :offer
def add_fields_from_offer(order)
order.offer.each do |offer|
offer_id = nil
order << offer
end
end
end
我将不胜感激有关此代码或此方法结构的任何建议。Offer 对象实际上是交易产品,因此一旦被接受就应该销毁它。但我希望将订单保存为用户帐户历史记录的对象。
这本质上意味着重复相同的字段,但使用不同的模型——这是一个好方法还是有更好的方法?
非常感谢