У меня есть модель user.rb и касается query_filter.rb.
Доступ к запросу в модуле метода поддержки
module QueryFilter
extend ActiveSupport::Concern
def apply(attr)
end
end
class User < ActiveRecord::Base
extend QueryFilter
end
Я хотел бы применить фильтры для всей модели или для запроса.
Например:
> User.apply(attributes)
=> #query
> User.where(sex: 'male').apply(attributes)
=> #query
У меня есть две проблемы.
Прежде всего, я не знаю, как я могу получить доступ к запросу, по которому я вызвал свой метод в модульном методе?
Во-вторых User.apply(attributes)
не работает, я могу использовать User.all.apply(attributes)
, но это не тот случай. Есть ли возможность вызвать метод сразу после имени класса или запроса?
Это не помогает ни с чем, если я использую include, я могу вызвать свой метод на одном объекте ... Я хочу вызвать его по запросу или целому классу – Gregy
ах вы правы, мне нужно включить его, а затем добавить мой метод, относящийся к модулю ClassMethods, но все же я не могу получить доступ к отношению, на котором я назвал этот метод. – Gregy
Я боюсь, что это совершенно неправильный подход для этого - поскольку 'where' не возвращает объект' User'. –