2013-05-04 93 views
1

我从我的模型中调用特定方法时不断获取未定义的方法。在Rails模型中调用方法时未定义的方法

class User < ActiveRecord::Base 
    def update! 
    request_info 
    end 
    def request_info 
    return "hmmm" 
    end 
end 

request_info里面的更新!没有定义 我试过让它成为self.request_info,但这也行不通

+0

你在调用它之前正在做一个用户的实例吗?我的意思是'User.first.update!' – MrYoshiji 2013-05-04 17:48:54

+0

你打电话给'update!'怎么样? – 2013-05-04 17:49:22

回答

0

更新!是方法名称的错误选择:update已经被定义为ActiveRecord :: Base上的(私有)方法 - 这可能会导致混淆。

>> u = User.last 
>> u.update 
NoMethodError: private method `update' called for #<User:0x007ff862c9cc48> 

但除此之外,你的代码工作完全正常,当我尝试在控制台:

>> u = User.last 
>> u.update! 
=> "hmmm" 
5

有两种方法来调用轨道的方法。

class Foo 
    def self.bar 
    puts 'class method' 
    end 

    def baz 
    puts 'instance method' 
    end 
end 

Foo.bar # => "class method" 
Foo.baz # => NoMethodError: undefined method ‘baz’ for Foo:Class 

Foo.new.baz # => instance method 
Foo.new.bar # => NoMethodError: undefined method ‘bar’ for #<Foo:0x1e820> 

你也这么做吗?我从here中得到了这个例子。查看该页面了解详细信息。

相关问题