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
Tengo un código como este. Me gustaría mejorarlo para que use un método, algo así como create_or_update.create_or_update method in rails
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)
Si el name
existe en la base de datos, entonces debe actualizar ese objeto de lo contrario, debe crear un nuevo objeto.
¿Existe algún método con el que pueda hacer esto?
Gracias por esto. Como nota, el nombre no tiene que volver a pasar porque ya se inicializó con un nombre. Además, los paréntesis no son necesarios aquí. –
Y así las operaciones están separadas, no en una transacción. – Green
find_or_intialize_by_method está obsoleto desde Rails 4 –