Как мне повторно использовать именованные области?
-
06-07-2019 - |
Вопрос
Здравствуйте, у меня есть named_scope
в моей модели Пользователь
, как показано ниже.
named_scope :by_gender, lamdba { |gender| { :conditions => { :gender => gender } } }
Я хочу создать две другие именованные области, которые будут использовать что-то вроде этого,
named_scope :male, lambda { by_gender('male') }
named_scope :female, lambda { by_gender('female') }
Есть идеи, что делать?
Решение
Вы можете предоставить методы класса, которые выполняют аппаратную передачу аргументов:
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 где-либо еще.
Не связан с StackOverflow