This question concerns three models:
Sale
class Sale < ActiveRecord::Base
has_many :sale_items
has_many :items, through :sale_items
end
Item
class Item < ActiveRecord::Base
has_many :sale_items
has_many :sales, :through => :sale_items
end
SaleItem
class SaleItem < ActiveRecord::Base
belongs_to :sale
belongs_to :item
end
为解释,<代码>项目代码>作为<代码>sale_item的基础模板。 该申请有许多<代码>Item,但不一定是每个<代码>S的一部分。 因此,sale_item.name
实际点为<代码>sale_item.name 和sale_item
s 方法如下:
def price
super || item.price
end
A sale_item
either gets its price from its item
, or that price can be overridden for that specific sale_item
by editing its price
column in the database.
这就是我在<条码>中遇到的困难。 观点:我基本上需要一份所有<代码>Item的物体一览表,这些物体见本表的Tinkerbin:。
因此,这意味着,如果对一个未加检查的检查箱进行核对并提交表格,就必须建立一个新的<代码>(SaleItem>,并有一个<编码>项目<>>。 等于,如果从清单中加上适当的<代码>price和_quantity
领域(quantity
是SaleItem
的具体规定,且不存在Item
。
此外,如果正在编辑的<代码>Sale已经包括一个特定的<代码>SaleItem,在发出表格时,该核对箱就应当检查(这样一行的箱子就删除<代码>)。 页: 1 www.un.org/spanish/ga/president
我不敢确定如何做到这一点——也许我会从一开始就错过。 我赞成完全取消<代码>SaleItem模型,并只是创设一个<代码>项目_sales的表格,其标题是
sale_id
、>、
price
和quantity
,但我并不相信,这是最佳模式。
Update
我的先前解决办法最后存在一些缺陷和失败测试。 最后,我表示,它将很快找到真正的解决办法。