我从我的模型中调用特定方法时不断获取未定义的方法。在Rails模型中调用方法时未定义的方法
class User < ActiveRecord::Base
def update!
request_info
end
def request_info
return "hmmm"
end
end
request_info里面的更新!没有定义 我试过让它成为self.request_info,但这也行不通
我从我的模型中调用特定方法时不断获取未定义的方法。在Rails模型中调用方法时未定义的方法
class User < ActiveRecord::Base
def update!
request_info
end
def request_info
return "hmmm"
end
end
request_info里面的更新!没有定义 我试过让它成为self.request_info,但这也行不通
更新!是方法名称的错误选择:update已经被定义为ActiveRecord :: Base上的(私有)方法 - 这可能会导致混淆。
>> u = User.last
>> u.update
NoMethodError: private method `update' called for #<User:0x007ff862c9cc48>
但除此之外,你的代码工作完全正常,当我尝试在控制台:
>> u = User.last
>> u.update!
=> "hmmm"
有两种方法来调用轨道的方法。
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中得到了这个例子。查看该页面了解详细信息。
你在调用它之前正在做一个用户的实例吗?我的意思是'User.first.update!' – MrYoshiji 2013-05-04 17:48:54
你打电话给'update!'怎么样? – 2013-05-04 17:49:22