Dmi*_*nyi 3 debugging ruby-on-rails rubymine
我正在快速使用现有的Rails项目,并且想知道模型中的特定属性(字段)在哪里被修改(ActiveRecord).在Java中,我要么在setter上使用Eclipse"find reference"功能,要么在那里设置断点.使用ActiveRecord,该属性甚至没有列在类文件中!当然,我可以进行文本搜索并查看数百个结果,但这无法解决使用IDE的问题.有没有更好的办法?我正在使用RubyMine.
Kernel.caller
Rails使用method_missing在ActiveRecord模型上实现属性方法.您可以在ActiveRecord :: Base源代码中看到它.我会为模型类YourModel解决这个问题的方式是这样的:
class YourModel < ActiveRecord::Base
def myfield=(*args)
Rails.logger.debug "myfield called at #{Kernel.caller.inspect}"
super(*args)
end
end
Run Code Online (Sandbox Code Playgroud)
实际上还有一些其他方式可以更新您的属性,例如update_attribute和friends.如果找不到赋值调用站点,则可以保留覆盖方法,直到找到代码正在使用的方法.或者,您可以在gem的本地副本中更改ActiveRecord :: Base("bundle show activerecord"给出它的路径).
| 归档时间: |
|
| 查看次数: |
2062 次 |
| 最近记录: |