Неопределенный метод to_d для 0: Fixnum при попытке заполнить базу данных? - PullRequest
0 голосов
/ 31 марта 2012

Когда я пытаюсь заполнить свою базу данных, я получаю эту ошибку:

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 метод, подобный этому? Что на самом деле здесь происходит? Я не совсем уверен.

1 Ответ

2 голосов
/ 31 марта 2012

Не могли бы вы установить стоимость 0.0 вместо 0?

self.cost = 0.0 if self.cost.blank?

Это должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...