Tôi muốn các thuộc tính của mô hình UserPrice của tôi mặc định là 0 nếu chúng trống hoặc nếu nó không hợp lệ hóa số. Các thuộc tính này là tax_rate, shipping_cost và giá.Đặt thuộc tính mặc định là 0 nếu để trống hoặc nếu không xác thực số
class CreateUserPrices < ActiveRecord::Migration
def self.up
create_table :user_prices do |t|
t.decimal :price, :precision => 8, :scale => 2
t.decimal :tax_rate, :precision => 8, :scale => 2
t.decimal :shipping_cost, :precision => 8, :scale => 2
end
end
end
Lúc đầu, tôi đặt :default => 0
bên trong của bảng cho tất cả 3 cột nhưng tôi không muốn điều đó bởi vì nó đã có những lĩnh vực điền vào và tôi muốn sử dụng placeholders. Đây là mô hình UserPrice tôi:
class UserPrice < ActiveRecord::Base
attr_accessible :price, :tax_rate, :shipping_cost
validates_numericality_of :price, :tax_rate, :shipping_cost
validates_presence_of :price
end
ĐÁP
before_validation :default_to_zero_if_necessary, :on => :create
private
def default_to_zero_if_necessary
self.price = 0 if self.price.blank?
self.tax_rate = 0 if self.tax_rate.blank?
self.shipping_cost = 0 if self.shipping_cost.blank?
end