我從我的模型中調用特定方法時不斷獲取未定義的方法。在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