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
Ich habe Code wie folgt. Ich möchte es verbessern, so dass es eine Methode verwendet, etwa create_or_update.create_or_update Methode in Schienen
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)
Wenn die name
in der Datenbank vorhanden ist, dann sollte es das Objekt aktualisiert sonst sollte es ein neues Objekt erstellen.
Gibt es eine Methode, mit der ich das machen kann?
Danke dafür. Als Anmerkung muss der Name nicht erneut übergeben werden, da er bereits mit einem Namen initialisiert wurde. Auch die Hash-Klammern werden hier nicht benötigt. –
Und so Operationen sind getrennt, nicht in einer Transaktion. – Green
find_or_intialize_by_method ist ab Rails 4 veraltet –