Mongoid Rails - 有没有办法在保存前检查字段的数据类型?
Mongoid Rails - Is there a way to check the field's datatype before saving?
我有这个 class ProfitLoss
,其中包含这些字段。我想在 before_validation
上调用此方法 zero_if_blank
,因为 before_save
不起作用,我想做的是将 0 分配给那些空白的值并且 Integer
当来自表格。 我搜索了很多类似 Mysql columns_hash
但没有找到任何方法来给出 mongo 中每个字段的类型。
class ProfitLoss < Generic
include Mongoid::Document
include Mongoid::Timestamps
include MongoMysqlRelations
field :fiscal_year, type: String
field :sales_excluding_other_incomes, type: Integer
field :other_incomes, type: Integer
field :closing_stock, type: Integer
before_validation :zero_if_blank
def zero_if_blank
pp self.columns_hash.each {|k,v| puts "#{k} => #{v.type}"}
end
end
这段代码完成了工作:)
def zero_if_blank
self.fields.each do |k,v|
if v.type == Integer && self.attributes[k] == nil
self.__send__("#{k}=", 0)
end
end
end
我有这个 class ProfitLoss
,其中包含这些字段。我想在 before_validation
上调用此方法 zero_if_blank
,因为 before_save
不起作用,我想做的是将 0 分配给那些空白的值并且 Integer
当来自表格。 我搜索了很多类似 Mysql columns_hash
但没有找到任何方法来给出 mongo 中每个字段的类型。
class ProfitLoss < Generic
include Mongoid::Document
include Mongoid::Timestamps
include MongoMysqlRelations
field :fiscal_year, type: String
field :sales_excluding_other_incomes, type: Integer
field :other_incomes, type: Integer
field :closing_stock, type: Integer
before_validation :zero_if_blank
def zero_if_blank
pp self.columns_hash.each {|k,v| puts "#{k} => #{v.type}"}
end
end
这段代码完成了工作:)
def zero_if_blank
self.fields.each do |k,v|
if v.type == Integer && self.attributes[k] == nil
self.__send__("#{k}=", 0)
end
end
end