Назначение аксессоров в after_initiialize - PullRequest
0 голосов
/ 22 декабря 2011

Допустим, у меня есть модель (to_js - это пользовательский метод, из здесь , для преобразования времени ruby ​​в формат даты JS):

class Model < ActiveRecord::Base
  attr_accessor :js_start_time

  def after_initialize
    js_start_time = self.start_time.to_js
  end
end

Когда я нахожу экземплярэтой модели в консоли, js_start_time - ноль.Почему это?Спасибо.

РЕДАКТИРОВАТЬ: глупая ошибка.Нужно сделать:

class Model < ActiveRecord::Base
  attr_accessor :js_start_time
  after_find :set_js_time

  def set_js_time
    self.js_start_time = self.start_time.to_js
  end
end

1 Ответ

1 голос
/ 22 декабря 2011

Похоже, вам нужно немного изучить то, что делают ваши данные.

Если вы еще этого не сделали, добавьте камень: ruby-debug

Затем добавьте строку *За 1006 * до вашего nil вызова вот так:

def after_initialize
  debugger # <---- add this here.
  js_start_time = self.start_time.to_js
end

Затем запустите ваш сервер rails s --debugger

Когда вы попадете в отладчик, попробуйте выяснить, что такое мгновенные переменные и атрибутыдоступно.

Кроме того, покажите нам, что говорит ошибка трассировки стека!

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