選択したタイムスタンプに基づいて同じモデルとその関連付けのセットを再利用する
概要
学校管理システムに焦点を当てたRails 6アプリケーションで、どの学校でも作成した構造を学年ごとに再利用できる方法を探しています。
ザビエル スクール - 2022 学年度
上記のモデルの構造が学校によって 2022 年に作成された場合、次の 2023 年に、2022 年の構造を再利用できますか? 2023 年のクラス A は異なるため、org_year(2021、2022、2023…など) に組織の新しい関係を追加したと仮定して、2023 年のすべてのモデルとその関連付けを再作成せずにこれを行うにはどうすればよいですか? 2022 年の同じクラス A ですが、アルバムは年に関係なく同じになります。
これを達成するにはどうすればよいでしょうか?
Papertrail を試してみたかったのですが、これはやりすぎです。
私の解決策 - 組織/学校モデルにbelongs_to :academic_yearを追加すると、指定した学年のすべてのデータを取得でき、明示的な挿入クエリをヒットすることですべてを再生成します。
old_school_structure = AcademicYear.get_school_data("2022")
// regenerate new set for new year
new_school_structure = AcademicYear.set_school_data("2023")
ActiveRecord::Base#clone と https://github.com/moiristo/deep_cloneable を使用できます。 ただし、これが、多数の教室とアルバムを持つ大規模な学校の、大規模な関連付けを持つ大規模なデータ セットで機能するかどうかはわかりません。
助言がありますか?
解決策
私も同様のアプリを作成したことがあります。新しい年を作成し、前年の構造を新しい年にコピーするスクリプトがありました。前年に起こったことの履歴を (少なくとも数年間は) 維持したかったので、前年だけを使用することは決して望んでいませんでした。
また、実際に生徒を次の学年に移動させました。これは時折間違っている場合もありましたが(子供が留年した)、ほとんどの場合は事実であり、教師/管理者にとって、残りの生徒全員よりも数人の子供を戻す方がはるかに簡単でした。フォワード。
クローンを使用したかどうかは覚えていませんが、ディープ クローンは使用しませんでした。レイヤーの数もそれほど多くなく、それらを反復処理するだけで非常に簡単でした。