в последнее время мне не очень повезло с ответами в Stackoverflow (я думаю, что я король награды вьюнок), но здесь все равно:
Как я могу обновить только пустые поля при использовании activeRecord?У меня есть этот код:
master_info.update_attributes( {:originalTitle => slave_info.originalTitle,
:starring => slave_info.starring,
:theatrical => slave_info.theatrical }
И хотелось бы что-то вроде:
master_info.update_attributes( {:originalTitle => slave_info.originalTitle, if !master_info.originalTitle.present?
:starring => slave_info.starring, if !master_info.starring.present?
:theatrical => slave_info.theatrical if !master_info.theatrical.present? }
Я мог бы сделать это по одной строке за раз, но я пытаюсь избежать этого:
master_info.update_attributes(:originalTitle => slave_info.originalTitle) if !master_info.originalTitle.present?
Я прочитал что-то вроде:
master_info.update_attributes( {:originalTitle => slave_info.originalTitle,
:starring => slave_info.starring,
:theatrical => slave_info.theatrical }.reject{ |key, value| value.present?} )
Но это не работает, ничего не обновляет, даже пустые поля.
На самом деле, было бы идеально, если бы вам не приходилось повторять имена полей, поскольку все они названы одинаково как в ведущем, так и в ведомом устройствах, но я не могу сделать .each для activeRecord.Но это вторичная проблема, основной является обновление пустых полей.
Здесь надеемся, что этот не получит перекати:)