в последнее время не очень везет с ответами в 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. Но это второстепенная проблема, основная проблема - обновление пустых полей.
Надеюсь, у этого не будет перекати-поле :)