Rails обновляет только пустые поля

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

Надеюсь, у этого не будет перекати-поле :)

9
задан kakubei 8 February 2012 в 10:34
поделиться