2014-12-09 2 views
0

я использовал код в контроллере, чтобы обновить все записи для другой модели, используя массив идентификаторов:Rails new_all в контроллере?

Expense.update_all({reimbursed: true}, {id: params[:expense_ids]}) 

Есть ли способ, чтобы новые/строить/создавать записи?

Что-то вроде:

Expense.new_all({reimbursed: true}, {expense_id: params[:expense_ids]}) 

Спасибо за вашу помощь!

+0

Что 'build_all' значит? Построить 100 расходов? – ptd

+0

Я считаю, что могу создать новый Расход с 'Expense.new'. Но я хотел создать новый для каждого параметра 'params [: cost_ids]' – Reddirt

+0

идентификаторы автоматически назначаются базой данных, что гарантирует, что каждая запись будет иметь уникальный идентификатор. Очень редко вам нужно создать экземпляр новой модели с выбранным вами идентификатором. Можете ли вы объяснить, откуда взялись «params [: cost_ids]» и почему вы хотите создавать новые экземпляры Expense с этими идентификаторами вместо того, чтобы позволить базе данных автоматически назначать уникальные идентификаторы? –

ответ

0

Вы можете передать несколько хэшей атрибутов в create, чтобы создать несколько экземпляров модели. From the docs:

# Create an Array of new objects 
User.create([{ first_name: 'Jamie' }, { first_name: 'Jeremy' }]) 
+0

Спасибо за помощь. Мой массив: '>> params [: cost_ids] => [" 42 "," 43 "]' - как я могу превратить их в целые числа. Я попробовал 'params [: cost_ids.to_i]' – Reddirt

Смежные вопросы