if ClassName.exists?(["id = ?", self.id])
object = ClassName.find_by_name(self.name)
object.update_attributes!(:street_address => self.street_address,
:city_name => self.city_name,
:name => self.org_unit_name,
:state_prov_id => self.state_prov_id,
:zip_code => self.zip_code)
else
ClassName.create! :street_address => self.street_address,
:city_name => self.city_name,
:federalid => self.federalid,
:name => self.org_unit_name,
:state_prov_id => self.state_prov_id,
:zip_code => self.zip_code
end
Ho codice come questo. Mi piacerebbe migliorarlo in modo che usi un metodo, qualcosa come create_or_update.metodo create_or_update in rotaie
ClassName.create_or_update_by_name(:name => self.name,
:street_address => self.street_address,
:city_name => self.city_name,
:federalid => self.federalid,
:name => self.org_unit_name,
:state_prov_id => self.state_prov_id,
:zip_code => self.zip_code)
Se il name
esiste nel database allora dovrebbe aggiornare l'oggetto altrimenti si dovrebbe creare un nuovo oggetto.
Esiste un metodo con cui posso farlo?
Grazie per questo. Come nota, il nome non deve essere passato di nuovo poiché era già inizializzato con un nome. Anche qui le staffe hash non sono necessarie. –
E quindi le operazioni sono separate, non in una transazione. – Green
find_or_intialize_by_method è obsoleto a partire da Rails 4 –