Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Rails中存储许多可选字段?_Ruby On Rails_Database Design_Activerecord - Fatal编程技术网

Ruby on rails 如何在Rails中存储许多可选字段?

Ruby on rails 如何在Rails中存储许多可选字段?,ruby-on-rails,database-design,activerecord,Ruby On Rails,Database Design,Activerecord,我正在开发一个显示产品的应用程序。每个产品都是一个模型(产品),带有一些常见信息,如名称、品牌等。为了区分我们正在寻找的产品类型,我们有一个产品类型(如:电话、电视、沙发等),它基本上是一个小字段(例如1=电话,2=电视) 现在,根据产品类型,每个产品都可以有不同的选项:如果是手机,产品应该有额外的相关信息(如重量、是否有LTE、是否有前置摄像头等),电视应该有显示尺寸等信息 我的问题是:根据产品类型,向产品添加这些额外数据的最佳/或/最简单方法是什么? 我正在考虑使用一个额外的模型Produc

我正在开发一个显示产品的应用程序。每个产品都是一个模型(产品),带有一些常见信息,如名称、品牌等。为了区分我们正在寻找的产品类型,我们有一个产品类型(如:电话、电视、沙发等),它基本上是一个小字段(例如1=电话,2=电视)

现在,根据产品类型,每个产品都可以有不同的选项:如果是手机,产品应该有额外的相关信息(如重量、是否有LTE、是否有前置摄像头等),电视应该有显示尺寸等信息

我的问题是:根据产品类型,向产品添加这些额外数据的最佳/或/最简单方法是什么?

我正在考虑使用一个额外的模型ProductOptions,其中包含字段product\u id、option\u type、option\u value(VARCHAR),用于存储额外的字段,但我不确定这对于性能和搜索是否是可选的。在这种情况下,搜索意味着查找与给定标准匹配的所有ProductOptions(例如,
po=ProductOption.where(:option\u type=>“LTE”,:option\u value=>“yes”)
),然后执行
Product.findAllIn(po)
,以查找实际产品

或者我应该使用Postgres和HStore?HStore在搜索时是否有效

有什么想法吗


Rails新手,所有代码都是伪代码

如果您已经在查看ProductType,您可能会这样做,并实际定义不同的产品类型。无论如何,编写代码会更容易。在这种情况下:

class Product < ActiveRecord::Base
  # common functionality goes here
end

class Sofa < Product
  # sofa specific functionality goes here
end
诸如此类

Product.all
就数据库性能而言,最终会有相当数量的空字段,但所有属性都是可搜索的(与序列化不同),并且只需要查询一个表。因此,我预计这将超过我所知道的任何其他选择

另外,它很好,而且是面向对象的。:)

祝你好运,欢迎来到Rails

Product.all