#ruby-on-rails #ruby
#ruby-on-rails #ruby
Вопрос:
Как бы я вызвал myfunc
и myotherfunc
приведенные ниже методы вне класса?
class Accounting::Invoice < ActiveRecord::Base
def myfunc
return true
end
class << self
def myotherfunc
return false
end
end
end
Ответ №1:
myfunc
это метод экземпляра, поэтому сначала вам нужен экземпляр, а затем вы можете вызвать функцию:
invoice = Accounting::Invoice.new
invoice.myfunc
myotherfunc
является методом класса, поэтому вы просто вызываете его непосредственно на объекте класса:
Accounting::Invoice.myotherfunc
Кстати, этот ответ не специфичен для Rails; он применим к любой программе Ruby.
Этот пост может быть полезен (я не читал его полностью): http://railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby /
Комментарии:
1. я поддержал ваш ответ, но хотел кое-что добавить для @user662503, который не заслуживал ответа. Для OP
class << self
синтаксис — это ярлык, обычно используемый для определения нескольких методов класса одновременно. Это эквивалентно написаниюdef self.myotherfunc return false end
2. @Caley Woods, спасибо за комментарий, это полезно знать.