2 записи, созданные с использованием activerecord find_or_initialize_by, за которыми следуют update_attributes - PullRequest
0 голосов
/ 19 февраля 2020

Я использую find_or_initialize_by, а затем update_attributes для создания новой записи, иначе обновление, если запись уже существует.

ниже приведен фрагмент кода в Ruby.

StudentResult.find_or_initialize_by(
        :course_id => course_id,
        :student_id => student_id,
        :assessment_id => assignment_id,
        ).update_attributes!(
        :total_score => assignment_total_score,
        :score => assignment_score
)

Но я вижу есть две записи для одной и той же комбинации course_id, student_id ,valuation_id . Это редко случается только для некоторых записей.

course_id, student_id, assessment_id , total_score, score, created_at , updated_at
7779,156035,29792,30,0,2020-02-06 13:54:30.325446,2020-02-06 13:54:30.325446
7779,156035,29792,30,0,2020-02-06 13:54:30.326769,2020-02-06 13:54:30.326769

В настоящее время у меня нет уникальных ключевых ограничений на таблицу StudentResult. Но в идеале он должен создавать только 1 запись для комбинации course_id, student_id иvaluation_id. Я скептически отношусь к тому, что это может быть связано с некоторыми условиями гонки или что-то не хватает в моем коде.

...