实际上,我刚刚开始从事一个与此相关的学习项目,作为我储藏室库存跟踪系统的一部分。
问题一:
我们有一个食谱,其中包含许多配料、许多方向以及各种其他属性,例如份量、烹饪时间 等。成分是它们自己在数据库中的表(模型),它们引用(在我的应用程序中,我不知道这与你是否相关)我的储藏室中存在的一个项目。以下是我的模型的基本要点:
class Recipe < ActiveRecord::Base
####################
# Database Rows:
# id -> integer
# name -> string
# description -> string
# directions -> serialized string, array
# servings -> integer
serialize :directions
# Relations
has_many :ingredients
end
对我来说,将方向作为字符串数组处理是最直接的解决方案。 ActiveModel 会将整个数组作为单个字符串存储在单个列中,并使用serialize 辅助方法将其转换为应用程序内部的数组。我不确定你是否使用 Rails,所以这可能没有帮助。
class Ingredient < ActiveRecord::Base
######################
# Database Rows:
# id -> integer
# quantity -> decimal
# measurement -> string
# inventory_id -> integer
# Relations
belongs_to :recipe
has_one :inventory
end
更明确地说,在数据库中,有“食谱”和“配料”表。单个配方将引用成分表中的许多行。配方存储它所包含的成分列表。
问题2:
根据this,我们正在查看字符串列的 8,000 字节限制。这足以满足您的需求吗?你决定。如果您认为描述太小,您可以更改行类型。您可以将方向存储在单独的表中,以便每个单独的方向具有 8,000 字节的限制。不过,这些都是很长的方向......
我的项目是here,如果你想四处看看或其他什么。仍在进行中。