【问题标题】:I can't replicate this database model in Activerecord我无法在 Activerecord 中复制此数据库模型
【发布时间】:2020-08-27 01:33:08
【问题描述】:

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

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

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

XML Sample file

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

Category
FeatureGroup
Feature

我在CategoryFeatureGroup 之间以及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-rails database


    【解决方案1】:

    看起来 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 表找到。

    【讨论】:

    • 我需要 FeatureGroup。使用 FeatureGroup 对特征进行分组。我认为他们提取 FeatureGroup 进行翻译,CategoryFeatureGroup 有一个 FeatureGroup。此时,featureGroup 的“名称”在 featureGroup 表中......
    • 好的,您没有在模型中显示该名称字段,所以我认为它只是一个连接表。特征和特征组之间没有直接关系。
    • 是的,我知道。基本上我的查询应该是 group = Category.first.category_feature_groups.first group.feature_group.name (the name) group.features (the features)
    • 如果你可以为 category_feature_group 和 category_feature 创建模型,你可以在你的模型中使用 has_many through: 让 Rails 在你的查询中自动创建连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多