首页 > 解决方案 > 我无法在 Activerecord 中复制此数据库模型

问题描述

我正在使用 Icecat 产品数据库中的数据在 Rails 中创建产品目录。我在复制 Category - FeatureGroup - Feature 结构时遇到了一些问题。

这是数据库的架构,您可以忽略词汇和语言,因为它们是用于翻译的。

在此处输入图像描述

这是每个产品的 xml 文件作为参考

XML 示例文件

在我的 rails 应用程序中,我创建了三个模型:

Category
FeatureGroup
Feature

Category我在and 和andFeatureGroup之间添加了多对多的关系。FeatureGroupFeature

基本上我认为每个类别都有很多FeatureGroups,每个 FeatureGroup 都有很多Features.

但在 XML 文件中,每个特征节点都有这种结构

<ProductFeature Localized="0" ID="150078803" Local_ID="0" Value="OLED" CategoryFeature_ID="85325" CategoryFeatureGroup_ID="26690"  ...

所以基本上这个特性不属于一个特性组,而是属于CategoryFeature_IDCategoryFeatureGroup_ID

我假设这些表是 Category 和 Feature 以及 Category 和 FeatureGroup 之间的连接表,但我无法理解架构。而且我不知道如何在我的 Rails 应用程序数据库中复制这个模式......

我尝试通过任务导入数据,但我对一组有大约 28410 个功能,所以我认为有问题。

标签: ruby-on-railsdatabase

解决方案


看起来 feature_group 表被用作 category_feature_group 和词汇表之间的连接表。如果您只需要 Category 和 Feature 模型,在我看来您不需要 FeatureGroup 模型。

一个特征通过 category_features 有很多类别。category_feature 表有一个 feature_id 和一个 catid。所以你可以连接这两个表。

如果您确实需要 feature_group 表,您可以使用 category_features 表中的 category_feature_group_id 和 category_feature_group 表中的 feature_group_id 通过您的 category_features 表和您的 category_feature_group 表找到它。


推荐阅读