create_or_update méthode dans les rails
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 ceci. Je voudrais l'améliorer afin qu'il utilise une méthode, quelque chose comme create_or_update.
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, puis il devrait mettre à jour l'objet sinon il doit créer un nouvel objet.
Est qu'il existe une méthode qui n'existe que je peux faire avec?
Vous devez vous connecter pour publier un commentaire.
L'objet d'une réponse ci-dessus fonctionne bien pour Rails 3. Que dit la
find_or_initialize_by_attribute
méthodes ont été désapprouvées dans les Rails 4. C'est la nouvelle voie. Voir Rails4 Autodérision avertissement pour find_or_initialize_by méthode