has_many 関連付けの一意性を検証するアイデアがありました。関連付けられたレコードの ID に基づいて文字列を生成するとどうなるでしょうか?
例えば:
class Exam
has_many :problems #problems are unique and can be in multiple exams
validate :checksum, uniqueness: true #string
before_validate :check
def check
checksum = problems.map {|p| p.id}.join
end
end
私たちが解決したいエッジケースは次のとおりです。 、 、 などの明確な問題が与えられた場合3x4
、sqrt(4)
それら5+5
すべてが複数の試験に参加することは望ましくありません。
このアプローチについて考えている人はいますか?has_many の一意性を検証するより良い方法はありますか?
(PS「チェックサム」が正しい用語かどうかはわかりません。)