Может ли кто-нибудь сказать мне, как упростить следующую функцию в моей модели Invoice
? Он должен вернуть все Invoices
, связанные с конкретным Client
(оба подключены через таблицу Projects
).Пожалуйста, помогите мне упростить эту простую функцию Ruby on Rails
def self.search_by_client_id(client_id)
if client_id
projects = Project.where(:client_id => client_id)
Invoice.where(:project_id => projects)
else
scoped
end
end
Я действительно не могу обдумать это. Спасибо за любой вклад!
О да, вы правы. У меня вроде было чувство кишки ... – Tintin81
Единственная проблема в том, что мне нужно объединить несколько функций поиска в моем контроллере, например: '@invoices = current_user.invoices.includes (: project) .search_by_number (params [ :. запрос]) search_by_project_id (PARAMS [:. project_id]) search_by_client_id (PARAMS [: client_id]) '. И эти поиски должны быть подключены в SQL через * OR *, а не * AND *. Значит, я не могу использовать области здесь? – Tintin81
Gosh, я просто понимаю, как уродливый мой код контроллера ... – Tintin81