外部ソースから取得したデータを含むテーブルがあります。本質的に階層的で、他のテーブルを参照する 3 つの異なる列があります。ただし、外部キーは制約されていないため、これらのフィールドのデータは必ずしも有効ではありません。
特定の日付の親テーブルの既存の行を参照しない値を持つレコードを出力する汎用的なものを作成しようとしています。
私は基本的に次のようなものを持っています:
klass.where(:date => date).each do |rec|
next if rec.send(parent)
# do stuff with rec
end
klass
はテーブルのモデルであり、宣言された「 belongs_to parent
」関連付けのシンボルです。
この方法は機能しますが、1 日に何万ものレコードが存在する可能性がありますが、キーの一意の値は 100 未満です。親テーブルへの繰り返しのルックアップには、不快なほど時間がかかります。私がやりたいことは、すでに検索したすべてのキーを隠し、新しいキーでのみ検索を実行することです。
この目的のために、実行時に外部キー参照を持つフィールド名を取得できるようにしたいと考えています。デフォルトの命名規則を使用しているかどうかに関係なく、これが機能することが理想的です。