我想存储有关产品零件及其个别价格的数据。这些部件有不同的类别,但它们有共同的键,例如:name,:manufacturer,:rating,:partnumber等。
作为编程的初学者,我努力为此找到最佳设置: 1)为每个零件类别制作模型;要么 2)使用这些公共密钥制作通用零件模型,然后使用更深入的属性制作类别模型(属于零件模型)。
那么,价格模型应该如何与其他模型相关,具体取决于选择1还是2?
此外,如果有其他方法可以解决我想到的问题,请告知。
编辑[1]:更具体地说,我的系统会收集价格并进行比较。这将是一种价格优势,但更具体。因此,一个产品将有很多价格。
答案 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
或类似名称的表格,以便在产品销售时存储产品价格。随着产品价格的变化或产品的退役,这将允许准确的长期数据。