Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails中查找方法_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 在Rails中查找方法

Ruby on rails 在Rails中查找方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,在Rails中,我有一个非常普通的ActiveRecord::Base类,我看到以前的开发人员在项目模型中使用price方法,但我找不到该方法的位置,数据库中没有名为price的列,但是: [40] pry(main)> item.method(:price).source_location NameError: undefined method `price' for class `Item' from (pry):40:in `method' [41] pry(mai

在Rails中,我有一个非常普通的
ActiveRecord::Base
类,我看到以前的开发人员在
项目
模型中使用
price
方法,但我找不到该方法的位置,数据库中没有名为
price
的列,但是:

 [40] pry(main)> item.method(:price).source_location
   NameError: undefined method `price' for class `Item'
   from (pry):40:in `method'
  [41] pry(main)> item.price
   => 80.45
怎么会这样

find ./ -type f -name "*.rb" | xargs grep "def price"

不返回任何内容。没有别名或类似的东西。这个方法到底是从哪里来的?

如果你想知道它是从哪里来的:

item.method(:price).source_location

并非所有方法都源于
def
,在许多情况下,它们是使用
define\u方法、模块混合或其他更奇特的方法生成的。

谢谢大家,是的:

def method_missing(symbol, *args)
   if respond_to?(sym_to_cents_attribute(symbol))

由于存在以美分为单位的价格列,因此它返回以美元为单位的价格。

您能否只搜索字符串
price
,而不搜索
def price
?它可能来自
method\u missing
,甚至是隐藏在gem中的某个东西。由于ruby是动态方法,有可能他/她创建了一个动态方法,或者在模型中包含的某些模块中对其进行了元编程或定义。您尝试过这个吗<代码>项目。方法(:价格)
?答案属于答案,而不属于问题。