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
J'ai un code comme celui-ci. Je voudrais l'améliorer pour qu'il utilise une méthode, quelque chose comme create_or_update.méthode create_or_update dans les 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 le name
existe dans la base de données, alors il doit mettre à jour cet objet sinon il doit créer un nouvel objet.
Y a-t-il une méthode avec laquelle je peux faire ça?
Remerciements pour. Comme une note, le nom ne doit pas être passé à nouveau puisqu'il a déjà été initialisé avec un nom. De plus, les crochets de hachage ne sont pas nécessaires ici. –
Et donc les opérations sont séparées, pas dans une transaction. – Green
find_or_intialize_by_method est obsolète à partir de Rails 4 –