我的Classroom
型號具有兩個屬性student_classcode
和teacher_classcode
。在教室創建後,我有一個after_create
回調來生成這兩個代碼。目前,我只能產生student_classcode到目前爲止這一點:檢查屬性在兩列中是否唯一
(從here拍攝)
class Classroom < ActiveRecord::Base
after_create :generate_token
private
MAX_RETRIES = 10
def generate_token
update_column :student_classcode, SecureRandom.hex(4)
rescue ActiveRecord::RecordNotUnique => e
@token_attempts = @token_attempts.to_i + 1
retry if @token_attempts < MAX_RETRIES
raise e, "Retries exhausted"
end
end
現在,它可以確保student_classcode
是唯一的(最多10次重試)。我希望能夠生成teacher_classcode
,並且我想確保它在teacher_classcode
列和student_classcode
列中是唯一的。例如,如果Classroom A的student_classcode
'12345'和(偶然)Classroom B的teacher_classcode
生成爲'12345',我希望Classroom B重新生成類代碼。或者,如果Classroom B的student_classcode
'abcde'和Broom的teacher_classcode
'abcde',則我希望Classroom B重新生成teacher_classcode
。
我知道在兩列中存在兩個相同類代碼的機會很小,但我不想冒險。我怎樣才能做到這一點?
好主意!沒想到這一點。謝謝。 – Olivia