У меня есть форма редактирования массы. Пользователь выбирает несколько существующих записей. А затем нажимает кнопку, которая отображает новую форму записи (все значения пустые). Пользователь вводит некоторые данные для каждого атрибута, а затем нажимает кнопку submit, а затем обновляет все выбранные записи с указанными значениями.Обновление только атрибутов, которые не являются пустыми
Params хэш отправляется на сервер выглядит следующим образом:
{
'lead_ids' => [2,4]
'lead' => {
'name' => 'donato',
'email' => "",
'phone' => ""
}
}
Таким образом, в этом примере, только имя атрибут должен быть обновлен для свинца с идентификатором 2 и 4.
Это что я придумал:
lead = Lead.new lead_params
leads = Lead.where(id: params[:lead_ids])
changed_attrs = lead_params.select {|param| !param.values.first.blank?}
leads.each do |lead|
lead.update_attributes changed_attrs
end
Есть ли еще Railsy способ сделать это?
Это может быть немного чище, чтобы разорвать этот выход в 'обработке params', но это правильная идея. – tadman
'hash = params [: lead]', но в противном случае это путь. – GoGoCarl
@GoGoCarl: Хороший улов. – MTarantini