このコミットが含まれているのは:
+24
-5
@@ -19,13 +19,32 @@ class Model (eloquent.Model):
|
||||
self,
|
||||
*args: str,
|
||||
) -> None:
|
||||
q = self.query ()
|
||||
for arg in args:
|
||||
q = q.where (arg, getattr (self, arg))
|
||||
row = q.first ()
|
||||
row = self._find_upsert_row (*args)
|
||||
if row is not None:
|
||||
self.id = row.id
|
||||
# pylint: disable = invalid-name
|
||||
# pylint: disable = attribute-defined-outside-init
|
||||
self._Model__exists = True
|
||||
self.save ()
|
||||
self.save ()
|
||||
return
|
||||
|
||||
try:
|
||||
self.save ()
|
||||
except Exception:
|
||||
row = self._find_upsert_row (*args)
|
||||
if row is None:
|
||||
raise
|
||||
self.id = row.id
|
||||
# pylint: disable = invalid-name
|
||||
# pylint: disable = attribute-defined-outside-init
|
||||
self._Model__exists = True
|
||||
self.save ()
|
||||
|
||||
def _find_upsert_row (
|
||||
self,
|
||||
*args: str,
|
||||
):
|
||||
q = self.query ()
|
||||
for arg in args:
|
||||
q = q.where (arg, getattr (self, arg))
|
||||
return q.first ()
|
||||
|
||||
新しい課題から参照
ユーザをブロックする