gpt4 book ai didi

ruby-on-rails - Ruby on Rails : how do I find out where a method is called?

转载 作者:行者123 更新时间:2023-12-03 15:35:29 25 4
gpt4 key购买 nike

我正在快速了解现有的 Rails 项目,并且想知道模型 (ActiveRecord) 中的特定属性(字段)在哪里被修改。在 Java 中,我要么在 setter 上使用 Eclipse 的“查找引用”功能,要么在那里设置断点。使用 ActiveRecord,该属性甚至不在类文件中列出!当然,我可以进行文本搜索并查看数百个结果,但这违背了使用 IDE 的意义。有没有更好的办法?我正在使用 RubyMine。

最佳答案

tl;博士
Kernel.caller
解释

Rails 使用 method_missing 在 ActiveRecord 模型上实现属性方法。 You can see that in the ActiveRecord::Base source code. 我为模型类 YourModel 解决这个问题的方式是这样的:

class YourModel < ActiveRecord::Base
def myfield=(*args)
Rails.logger.debug "myfield called at #{Kernel.caller.inspect}"
super(*args)
end
end

实际上还有一些其他方法可以更新您的属性,例如 update_attribute 和 friend 。如果找不到分配调用站点,则可以继续覆盖方法,直到找到代码正在使用的方法。或者,您可以在 gem 的本地副本中更改 ActiveRecord::Base (“bundle show activerecord”给出了它的路径)。

关于ruby-on-rails - Ruby on Rails : how do I find out where a method is called?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com