Результаты поиска
Найдено результатов: 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
Есть ли способ объединить именованные области в новую именованную область?
У меня есть
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)
но это не особенно красиво.