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
Tôi có mã như thế này. Tôi muốn cải thiện nó để nó sử dụng một phương thức, giống như create_or_update.phương pháp create_or_update trong đường ray
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)
Nếu name
tồn tại trong cơ sở dữ liệu thì cần cập nhật đối tượng đó nếu không nó sẽ tạo đối tượng mới.
Có phương pháp nào tồn tại mà tôi có thể thực hiện việc này không?
Cảm ơn vì điều này. Như một lưu ý, tên không phải được chuyển vào một lần nữa vì nó đã được khởi tạo với một tên. Ngoài ra các dấu ngoặc không cần thiết ở đây. –
Và vì vậy các hoạt động riêng biệt, không phải trong giao dịch. – Green
find_or_intialize_by_method không được dùng như Rails 4 –