Как вызывать методы вне класса

#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, спасибо за комментарий, это полезно знать.