Я запрашиваю кучу таблиц / моделей для создания списка tab_projects
идентификаторов и использую эти идентификаторы, чтобы делать вещи с другими записями в других таблицах / моделях, но я хочу обновить проекты, на которые влияетзапрос.Это то, что у меня есть:
_account_type_list_member_id = RefAccountType.find_by_typename('List Member').id
# Select all projects more than one week old and associated accounts not classified as a list member
_records = TabProject
.select('tab_projects.id as tab_project_id, tab_projects.name as project_name, tab_projects.tab_client_seat_id as client_seat_id, tab_clients.name as client_name, tab_accounts.screen_name')
.where("tab_projects.updated_at < '#{1.week.ago}' and tab_client_project_accounts.ref_account_type_id != #{_account_type_list_member_id}")
.joins('inner join tab_clients on tab_projects.tab_client_id = tab_clients.id')
.joins('inner join tab_client_project_accounts on tab_projects.id = tab_client_project_accounts.tab_project_id')
.joins('inner join tab_accounts on tab_client_project_accounts.tab_account_id = tab_accounts.id')
# loop through all records in recordset
_records.map do |_record|
# do some stuff
end
_records.touch
Когда я запускаю его, я получаю следующую ошибку:
'method_missing': undefined method 'touch' for #<TabProject::ActiveRecord_Relation:0x000000084b2a00> (NoMethodError)
Итак, мои вопросы:
- Как я могу
touch
updated_at
для записей, возвращенных из запроса и сохраненных в _records
? - Есть ли способ, которым я могу
touch
все записи?Это должны быть записи, распределенные по tab_projects
(исходная таблица / модель), tab_client_project_accounts
(таблица присоединения) и tab_accounts
(учетные записи, связанные с какими-либо заданными записями в tab_projects
)?