non avere molta fortuna ultimamente con risposte in StackOverflow (penso di essere il re del premio Tumbleweed), ma qui va comunque:Rails aggiornare solo i campi vuoti
Come posso aggiornare solo i campi che sono vuoti quando si utilizza activeRecord? Ho questo codice:
master_info.update_attributes({:originalTitle => slave_info.originalTitle,
:starring => slave_info.starring,
:theatrical => slave_info.theatrical }
e vorrebbe qualcosa di simile:
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? }
ho potuto farlo una linea alla volta, ma sto cercando di evitare che:
master_info.update_attributes(:originalTitle => slave_info.originalTitle) if !master_info.originalTitle.present?
I leggere qualcosa del tipo:
master_info.update_attributes({:originalTitle => slave_info.originalTitle,
:starring => slave_info.starring,
:theatrical => slave_info.theatrical }.reject{ |key, value| value.present?})
Ma questo non funziona, non aggiorna nulla, nemmeno i campi vuoti.
In effetti, quale sarebbe l'ideale è non dover ripetere i nomi dei campi poiché sono tutti denominati uguali in entrambi i master e slave, ma non posso fare un .each su unRecord attivo. Ma questo è un problema secondario, quello primario sta aggiornando i campi vuoti.
Speriamo questo non ottiene un tumbleweed :)
E nel caso in cui si desideri mantenere il modo originale di aggiornamento, è necessario definire un altro metodo invece di sovraccaricare. – ksol
Mi dispiace, non capisco. Voglio aggiornare gli attributi se sono vuoti sul lato ricevente. Sembra che questo codice rimuova gli attributi vuoti dal campo in arrivo. O sto leggendo male? – kakubei
Mi dispiace, ho cambiato in 'unless read_attribute (attr) .empty?'. –