我试图找到模型new
方法的来源。我尝试使用source_location
ActiveRecord::Base.new 和 Widget.new(其中 Widget 是模型),然后执行
find . -name *rb -exec grep -il "def new$" {} \;
在 activerecord gem 目录中,但没有运气。
我试图找到模型new
方法的来源。我尝试使用source_location
ActiveRecord::Base.new 和 Widget.new(其中 Widget 是模型),然后执行
find . -name *rb -exec grep -il "def new$" {} \;
在 activerecord gem 目录中,但没有运气。
当一个 Ruby 对象通过 实例化时.new
,它通常运行对象的initialize
方法。这是Class
默认定义的:
1.9.3p327 :002 > ActiveRecord::Base.method(:new)
=> #<Method: Class#new>
如果您想为 Rails 模型创建自定义初始化程序,只需定义一个initialize
方法。请注意,对此有一些警告,因为initialize
ActiveRecord 不一定总是调用它。您最好添加一个after_initialize回调。
请参阅如何查找在运行时定义方法的位置?在 Ruby 中,“new”和“initialize”之间有什么关系?初始化时如何返回零?有关查找定义方法的位置以及如何相关的更多有用new
信息initialize
。