Найдено результатов: 2

Есть ли способ вызвать закрытый метод класса из экземпляра в Ruby?

Кроме self.class.send :method, args..., конечно. Я хотел бы сделать довольно сложный метод доступным как на уровне класса, так и на уровне экземпляра, не дублируя код.


UPDATE :

Бранам: это было мое предположение, но я хотел убедиться, что никто другой не нашел обходного пути. Видимость в Ruby сильно отличается от таковой в Java. Вы также совершенно правы, что private не работает с методами класса, хотя это объявит частный метод класса:

class Foo
  class <<self
    private
    def bar
      puts 'bar'
    end
  end
end

Foo.bar
# => NoMethodError: private method 'bar' called for Foo:Class

ruby   scope   visibility   class-method   access-specifier    

575   7   04:20, 27th August, 2020


Есть ли способ объединить именованные области в новую именованную область?

У меня есть

class Foo < ActiveRecord::Base
  named_scope :a, lambda { |a| :conditions => { :a => a } }
  named_scope :b, lambda { |b| :conditions => { :b => b } }
end

Я хотел бы

class Foo < ActiveRecord::Base
  named_scope :ab, lambda { |a,b| :conditions => { :a => a, :b => b } }
end

но я бы предпочел сделать это в стиле DRY. Я могу получить тот же эффект, используя

 Foo.a(something).b(something_else)

но это не особенно красиво.

ruby-on-rails   rails-activerecord   named-scope    

389   6   03:06, 29th August, 2020