我认为不是将父文件和嵌入文档中的某些属性保留为nil / null(例如,如果没有价格,则总共订单),我最好不要保存它们。如何在保存之前删除nil属性?
# embedded order position for each order
class Orderitem
include Mongoid::Document
field :quantity, :type => Integer
field :unit_price, :type => Integer
field :total, :type => Integer
field :economical_potential, :type => Integer
embedded_in :order
belongs_to :supplier
belongs_to :item
before_save :remove_empty_fields
private
def remove_empty_fields
attributes.each do |attr_name, value|
if value.nil?
# don't save attribute
end
end
end
end
答案 0 :(得分:0)
为什么要从模型中删除属性?在这种情况下,我会添加另一个名为unit
的模型,并添加:price
作为属性。然后向名为Orderitem
的{{1}}添加一个函数,该函数将根据单位数量及其价格返回总计。
在代码中它看起来像这样:
def total_of_unit
单位看起来像这样:
class Orderitem
...
field :quantity, :type => Integer
# drop :unit_price
# drop :total
field :economical_potential, :type => Integer
...
has_many :units
...
def total
@total = 0
self.units.each do |unit|
@total = @total + unit.price
end
return @total
end
end
答案 1 :(得分:0)
Mongoid支持#unset,因此您可以使用以下内容:
order_item.unset(:total)