【问题标题】:How to add multiple models to cart Rails如何将多个模型添加到购物车 Rails
【发布时间】:2012-03-31 16:19:05
【问题描述】:

您能否帮助如何将商品添加到购物车。 Rails Agile 解释了如何通过 line_items 将产品添加到购物车。 假设我的网站提供旅游套餐、豪华轿车服务、公寓房间和其他一些优惠。 客户将豪华轿车、旅游套餐、优惠添加到购物车并付款。 他们是不同的模型包,模型豪华轿车,模型公寓和其他模型。如果是这样,当我通过 line_items(cart_id, product_id) 添加到购物车时,我不知道如何添加其他模型。或者我应该将所有模型链接到产品模型吗? 在此先感谢

【问题讨论】:

  • 你应该首先弄清楚你的数据模型。只有这样您才能开始考虑将商品添加到购物车。
  • 肯感谢您的回答。类别豪华轿车,旅游,公寓,但他们有不同的属性。我不能拥有一个具有不同属性的产品模型。前任。豪华轿车有颜色,旅游地点,公寓大小。如何处理。
  • 销售时,您的购物车应该只关心产品ID。它可以使用该产品 ID 来获取该产品模型,以便访问其所有属性。您无需将模型添加到购物车。
  • 你说得对。我可以假设一切都是产品。豪华轿车比旅游套餐有 10 个不同的属性。我应该创建不同的模型并连接到产品吗?
  • 您可以创建不同的模型并将每个模型链接到一个产品。您的产品模型可以包含一些常见的产品属性,例如 ID、类别 ID、价格……您可以通过多种方式来处理这些!

标签: ruby-on-rails-3


【解决方案1】:

您可能不需要为每种产品类型使用不同的型号。您可以将产品分解为不同的类别。所以你只需要一个额外的模型——一个类别模型。每个产品都属于一个类别(并且类别将有许多产品)。在数据库中,每个产品都有一个 category_id。

像这样:

class Product < ActiveRecord::Base

  belongs_to :category
....


class Category < ActiveRecord::Base
  has_many :products

...

【讨论】:

  • 肯感谢您的回答。类别豪华轿车,旅游,公寓,但他们有不同的属性。我不能拥有一个具有不同属性的产品模型。前任。豪华轿车有颜色,旅游地点,公寓大小。如何处理。
  • 这将是您提出问题的好信息。看看这篇文章你的选择:code.alexreisner.com/articles/…
【解决方案2】:

你提到模型太不同了(在属性方面)。因此,单表继承可能不是您想要的。在这种情况下使用polymorphic association 来实现。

class LineItem < ActiveRecord::Base
  belongs_to :purchasable, :polymorphic => true
end

class Tour < ActiveRecord::Base
  has_many :line_items, :as => :purchasable
end

class LimoService < ActiveRecord::Base
  has_many :line_items, :as => :purchasable
end

【讨论】:

    猜你喜欢
    • 2020-01-14
    • 2015-10-10
    • 2021-08-16
    • 1970-01-01
    • 2022-11-10
    • 2015-02-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多