0
私は、これらのフィールドで構成されるこのクラスProfitLoss
を持っています。私はzero_if_blank
をbefore_validation
と呼んでいます。before_save
は機能しません。空白の値には0を代入し、フォームからはInteger
を割り当てます。 Mysql columns_hash
のようにたくさん検索しましたが、mongoの各フィールドのタイプを指定する方法が見つかりません。Mongoid Rails - 保存する前にフィールドのデータ型をチェックする方法はありますか?
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
あなたは 'フィールドを試してみました:other_incomes、種類:整数、デフォルト:0 'を? –
@SergioTulentsev私はそれを使用しましたが、フォーム入力では、すべての整数フィールドに0を表示するので、使用したくありません。 – Rishabh
@SergioTulentsevが指摘しているように、フィールドに[defaults](https://docs.mongodb.com/mongoid/master/tutorials/mongoid-documents/#defaults)を設定できるはずです。マニュアルで指摘されているように、「何も提供されなければ、Mongoidのフィールドには常にデフォルト値があると言うことができます。動作が異なる場合は、フォームとその戻り値を確認する必要があります。 –