Когда я пытаюсь заполнить свою базу данных, я получаю эту ошибку:
rake aborted!
undefined method `to_d' for 0:Fixnum
Это началось после того, как я добавил этот метод, который удаляет мои десятичные столбцы запятых, если они присутствуют (2000,00 <2000,00): </p>
def cost=(num)
num.gsub!(',','') if num.is_a?(String)
self[:cost] = num.to_d
end
У меня есть один и тот же метод для каждого из столбцов моей Product
модели:
create_table :products do |t|
t.decimal :cost, :precision => 11, :scale => 2
t.decimal :tax_rate, :precision => 8, :scale => 2
t.decimal :shipping_cost, :precision => 8, :scale => 2
t.decimal :cost_per_unit, :precision => 11, :scale => 2
t.decimal :unit_amount, :precision => 16
Теперь, глядя на след (на https://gist.github.com/2265580) Я думаю, что проблема может быть в моем default_to_zero_if_necessary
методе:
Product.rb
before_validation :default_to_zero_if_necessary, :on => :create
private
def default_to_zero_if_necessary
self.tax_rate = 0 if self.tax_rate.blank?
self.shipping_cost = 0 if self.shipping_cost.blank?
self.cost = 0 if self.cost.blank?
self.cost_per_unit = 0 if self.cost_per_unit.blank?
self.unit_amount = 0 if self.unit_amount.blank?
end
Может быть, я больше не могу использовать мой default_to_zero_if_necessary
метод, подобный этому? Что на самом деле здесь происходит? Я не совсем уверен.