什么结构对于这种分配会更好?

时间:2016-04-15 00:28:18

标签: ruby-on-rails ruby model associations relational-database

我想存储有关产品零件及其个别价格的数据。这些部件有不同的类别,但它们有共同的键,例如:name,:manufacturer,:rating,:partnumber等。

作为编程的初学者,我努力为此找到最佳设置: 1)为每个零件类别制作模型;要么 2)使用这些公共密钥制作通用零件模型,然后使用更深入的属性制作类别模型(属于零件模型)。

那么,价格模型应该如何与其他模型相关,具体取决于选择1还是2?

此外,如果有其他方法可以解决我想到的问题,请告知。

编辑[1]:更具体地说,我的系统会收集价格并进行比较。这将是一种价格优势,但更具体。因此,一个产品将有很多价格。

2 个答案:

答案 0 :(得分:0)

关于您的结构没有太多信息,但我可以假设,您需要获得有关polymorphic association.的更多信息

答案 1 :(得分:0)

根据您的描述,以下是我将如何构建初始架构:

window.onload = function(){    
    /* code for image slideshow  */
    var imgsrc = ["1.jpg", "2.jpg", "3.jpg", "4.jpg"];
    for(var i = 1; i<=imgsrc.length; i++)
    {
        var slideShow = document.getElementById("slideShow");
        var newImage = new Image();
        newImage.src = "image/" + imgsrc[i];
        slideShow.appendChild(newImage);   
    }
    slideShow.childNodes[0].setAttribute("class","current img-responsive");
    var x = 0;
    setInterval(function(){
        slideShow.childNodes[x%3].setAttribute("class","img-responsive");
        slideShow.childNodes[(x+1)%3].setAttribute("class","current img-responsive");
    x++;
    },3000);  
    /* end of code for image slideshow  */   
};  // end of window onload function

class Product < ActiveRecord::Base belongs_to :manufacturer belongs_to :category end class Manufacturer < ActiveRecord::Base has_many :products end class Category < ActiveRecord::Base has_many :products end 而言,是否要创建模型取决于如何填充评级。如果评级由单一来源决定,我只会将其作为产品模型的属性存储。如果评分是根据用户输入的某些计算确定的,您可以考虑rating ratings table

关于价格,听起来最好的选择是将价格存储在belongs_to :product上。我会将价格存储为十进制,精度为8,比例为2,可以使用rails生成器Product model或直接在这样的迁移中实现:

rails g migration AddPriceToProducts price:decimal{8.2}

这会将价格存储为class AddPriceToProducts < ActiveRecord::Migration def change add_column :products, :price, :integer{8.2} end end ,允许小数点左边的6位数字和右边的2位数字。

最后,如果您的应用程序打算销售产品,我建议您使用名为BigDecimal或类似名称的表格,以便在产品销售时存储产品价格。随着产品价格的变化或产品的退役,这将允许准确的长期数据。