ruby中布林型別欄位的非空校驗
阿新 • • 發佈:2019-02-13
無法用validate_presence_of來對boolean型別欄位進行非空校驗
migration程式碼
class CreateCorporateFinancials < ActiveRecord::Migration
def self.up
create_table :corporate_financials do |t|
t.integer :corporate_id
t.boolean :is_audit, :null => false, :default => false
t.text :balance_sheet
t.timestamps
end
end
def self.down
drop_table :corporate_financials
end
end
model:
class CorporateFinancial < ActiveRecord::Base
serialize :balance_sheet, Hash
belongs_to :corporate
validates_presence_of :is_audit
end
corporate_financial = CorporateFinanical.new (params)
cor_fina = CorporateFinancial.new(params)
corporate_financial.is_aduit
=> false
cor_fina.is_audit
=> true
corporate_financial.valid?
=> false
corporate_financial.errors
=> {:is_audit => "不能為空"}
cor_fina.valid?
=> true
當is_audit的值為false的時候,rails認為其值為空,意味著在對布林型別的欄位進行非空校驗時不能用validates_presence_of,我的解決方法是: validates_inclusion_of :is_audit, :in => [true, false]