1. 程式人生 > >ruby中布林型別欄位的非空校驗

ruby中布林型別欄位的非空校驗

無法用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]