Как мне повторно использовать именованные области? - PullRequest
3 голосов
/ 26 октября 2009

Привет У меня есть named_scope в моей User модели, как показано ниже.

named_scope :by_gender, lamdba { |gender| { :conditions => { :gender => gender } } }

Я хочу создать две другие именованные области, которые используют эту что-то вроде,

named_scope :male,   lambda { by_gender('male') }
named_scope :female, lambda { by_gender('female') }

Есть идеи, что делать?

1 Ответ

3 голосов
/ 26 октября 2009

Вы можете предоставить методы класса, которые выполняют аппаратную передачу аргументов:

def self.male
    by_gender('male')
end

def self.female
    by_gender('female')
end

или, поскольку named_scope, который вы используете, настолько прост, что вы можете вырезать область видимости by_gender и просто использовать:

named_scope :male, :conditions => {:gender => 'male'}
named_scope :female, :conditions => {:gender => 'female'}

Второй вариант, конечно, обусловлен тем, что вы на самом деле не требуете явного применения области by_gender где-либо еще.

...