Области применения, scope
в рельсах 3 и named_scope
в рельсах 2.
class Bar
scope :custom_find, lambda {|baz| where(:whatever => baz) }
end
foo_instance.bars.custom_find(baz)
scope
должен возвращать область видимости, поэтому, учитывая ваше обновление, вы, вероятно, не хотите использовать scope
здесь. Вы можете написать метод класса и использовать scoped
для доступа к текущей области, например:
class Bar
def self.custom_find(thing)
if bar = scoped.find_by_pineapple(thing)
bar.monkey
else
:banana
end
end
end