在after_initialize中分配访问者

时间:2011-12-22 17:50:26

标签: ruby-on-rails ruby ruby-on-rails-3

假设我有一个模型(to_js是一个自定义方法,来自here,将ruby Time转换为JS Date格式):

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为nil。为什么是这样?谢谢。

编辑:愚蠢的错误。需要做的事:

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 个答案:

答案 0 :(得分:1)

听起来你必须对你的数据进行一些探索。

如果您还没有,请添加gem:ruby-debug

然后在debugger来电之前抛出nil行:

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

然后运行您的服务器rails s --debugger

当你到达调试器时,尝试找出哪些即时变量和属性可用。

另外,请告诉我们堆栈跟踪错误的含义!