Tôi đang xây dựng cửa hàng trực tuyến để bán các sản phẩm như "Xanh cực lớn, áo phông". Tức là, cùng một chiếc áo có thể có nhiều kích cỡ/màu sắc, sự kết hợp khác nhau có thể được bán hết, sự kết hợp khác nhau có thể có giá khác nhau, v.v.Cách tạo mô hình "sản phẩm" trong ứng dụng cửa hàng trực tuyến
Câu hỏi của tôi là làm thế nào để mô hình hóa các sản phẩm này trong ứng dụng Rails của tôi làm điều đó trong bất kỳ ứng dụng nào).
suy nghĩ hiện tại của tôi là:
Class Product
has_many :variants, :through => :characteristics
has_many :characteristics
end
Class Characteristic
belongs_to :product
belongs_to :variants
end
Class Variant
has_many :products, :through => :characteristics
belongs_to :characteristic
end
Vì vậy, mỗi sản phẩm sẽ có một hoặc nhiều đặc điểm (ví dụ, "Color", "Kích thước", vv), và mỗi đặc trưng sau đó sẽ có một hoặc nhiều biến thể (ví dụ: "Đỏ", "Xanh dương", v.v.).
Vấn đề với phương pháp này là nơi tôi lưu trữ giá và khoảng không quảng cáo? I.e., giá và khoảng không quảng cáo của một sản phẩm nhất định được xác định bởi các biến thể mà các đặc điểm của nó mang lại. (Màu xanh lá cây có thể đắt hơn màu đỏ, lớn có thể hết hàng, vv).
Một ý nghĩ tôi có là cung cấp cho sản phẩm "base_price" và để biến thể sửa đổi, nhưng điều này có vẻ quá phức tạp (và có thể không hoạt động).
Đây là lời khuyên hữu ích. Tại công ty tôi làm việc cho chúng tôi chỉ có hai bảng - Sản phẩm và ProductItem - và màu sắc và kích thước không được chuẩn hóa đúng cách. Nó làm cho việc quản lý/kết hợp các hình ảnh màu cụ thể là một cơn ác mộng tuyệt đối. Đây là cách tôi sẽ làm điều đó; màu sắc và kích thước là khái niệm hạng nhất .... –
... và chúng tôi đã chạy vào các tình huống mà "vàng được tạo ở Thái Lan nhưng người da trắng đến từ Trung Quốc", nhưng vì chúng tôi lưu trữ ở cấp Sản phẩm, chúng tôi có thể 't mô hình đó và kết thúc nhân đôi SKU, gây ra các vấn đề khác. Linh hoạt nhưng cung cấp giao diện người dùng cho các trường hợp phổ biến là lời khuyên +1. –
Cảm ơn Nicholas. Lời khuyên này xuất phát từ việc bị đốt cháy quá thường xuyên bằng cách giả định rằng các đặc điểm "dễ" có thể chỉ được nhồi trong bảng chính. Tôi có thể dễ dàng thấy rằng bảng "Color" cuối cùng có được nhiều thuộc tính hơn do tìm nguồn khác biệt. Đánh lừa tôi một lần... – Godeke