0

我试图找到模型new方法的来源。我尝试使用source_locationActiveRecord::Base.new 和 Widget.new(其中 Widget 是模型),然后执行

find . -name *rb -exec grep -il "def new$" {} \;

在 activerecord gem 目录中,但没有运气。

4

1 回答 1

0

当一个 Ruby 对象通过 实例化时.new,它通常运行对象的initialize方法。这是Class默认定义的:

1.9.3p327 :002 > ActiveRecord::Base.method(:new)
=> #<Method: Class#new>

如果您想为 Rails 模型创建自定义初始化程序,只需定义一个initialize方法。请注意,对此有一些警告,因为initializeActiveRecord 不一定总是调用它。您最好添加一个after_initialize回调。

请参阅如何查找在运行时定义方法的位置?在 Ruby 中,“new”和“initialize”之间有什么关系?初始化时如何返回零?有关查找定义方法的位置以及如何相关的更多有用new信息initialize

于 2013-03-12T23:44:54.040 回答