class State
include Mongoid::Document
embeds_many :cities
field :name
end
class City
include Mongoid::Document
embedded_in :state
field :name
field :population
field ...
end
我不想将值为nil的字段包含在mongodb中,
nsw = State.new name: 'NSW'
if number_of_people
nsw.cities.create name: 'Syndey', population: number_of_people
else
nsw.cities.create name: 'Syndey'
end
因此有必要检查该字段是否为空或为空。但是问题是当City中有许多字段时,代码看起来很难看。
如何改善这一点并编写智能代码?
您需要在City
模型中定义一个自定义类方法,如下所示:
def self.create_persistences(fields = {})
attributes = {}
fields.each do |key, value|
attributes[key] = value if value
end
create attributes
end
并在您的控制器中,无条件调用此方法:
nsw.cities.create_persistences name: 'Syndey', population: number_of_people
注意:您也可以create
在模型上重写方法,而不是定义新方法,但是我认为,我不希望重写代码其他部分中可能使用的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句